MySQL SUBSTR() 函式



MySQL 的SUBSTR()函式用於從給定字串中提取子字串。它接受三個引數:原始字串、開始提取的位置以及要提取的子字串的長度。

此函式在您只需要字串的特定部分的情況下很有用,例如處理姓名、地址或其他型別的文字資料時。

SUBSTR() 函式等效於 MySQL 的SUBSTRING()函式。

語法

以下是 MySQL SUBSTR() 函式的語法:

SUBSTR(str,pos)
or,
SUBSTR(str FROM pos);

引數

此函式以字串值和起始位置作為引數。

返回值

此函式返回從給定字串中指定位置開始的子字串。

另一種語法

此函式還有第二種語法。除了字串和位置值之外,它還接受另一個數值,表示所需結果子字串的長度(例如 len)。

SUBSTR(str,pos,len)
or,
SUBSTRING(str FROM pos FOR len)

示例

在下面的示例中,我們從位置 11 開始提取子字串:

SELECT SUBSTR('Welcome to Tutorialspoint', 11);

以下是上述程式碼的輸出:

SUBSTR('Welcome to Tutorialspoint', 11)
Tutorialspoint

示例

以下示例演示了 SUBSTR() 函式第二種語法的用法。在這裡,我們嘗試獲取字串 "Hello how are you welcome to Tutorialspoint" 從位置 "15" 開始的子字串,結果長度為 "15":

SELECT SUBSTR('Hello how are you welcome to Tutorialspoint', 15, 15);

獲得的輸出如下:

SUBSTR('Hello how are you welcome to Tutorialspoint', 15, 15)
you welcome to

示例

您也可以在兩個引數之間使用 FROM 子句,而不是逗號 ',':

SELECT SUBSTR('Welcome to Tutorialspoint' FROM 11);

產生的結果如下:

SUBSTR('Welcome to Tutorialspoint' FROM 11)
Tutorialspoint

示例

您還可以將負值作為位置傳遞。如果您這樣做,結果子字串將從給定字串末尾的指定字元數之後開始:

SELECT SUBSTR('Welcome to Tutorialspoint' FROM -11);

以下是上述程式碼的輸出:

SUBSTR('Welcome to Tutorialspoint' FROM -11)
orialspoint

示例

您還可以將數值以字串的形式作為此函式的第一個引數傳遞:

SELECT SUBSTR('67326532 7822 879282 92', 15);

獲得的輸出如下:

SUBSTR('67326532 7822 879282 92', 15)
879282 92

示例

如果任何給定的引數為 NULL,則函式返回 NULL:

SELECT SUBSTR(NULL, 15);

產生的結果如下所示:

SUBSTR(NULL, 15)
NULL

示例

如果作為 pos 引數值的引數為 0,則函式返回空字串:

SELECT SUBSTR('Hello how are you welcome to Tutorialspoint', 0, 15);

以下是上述程式碼的輸出:

SUBSTR('Hello how are you welcome to Tutorialspoint', 0, 15)

示例

如果作為 len 引數(第二種語法)的值的引數小於 1,則函式返回空字串:

SELECT SUBSTR('Hello how are you welcome to Tutorialspoint', 5, -1);

獲得的結果如下:

SUBSTR('Hello how are you welcome to Tutorialspoint', 5, -1)

示例

讓我們建立一個名為 "EMP" 的表,並使用 CREATE 和 INSERT 語句向其中插入記錄,如下所示:

CREATE TABLE EMP(
   FIRST_NAME  CHAR(20) NOT NULL,
   LAST_NAME  CHAR(20),
   AGE INT,
   INCOME FLOAT
);

現在,讓我們使用 INSERT 語句向其中插入記錄:

INSERT INTO EMP VALUES 
('Krishna', 'Sharma', 19, 2000),
('Raj', 'Kandukuri', 20, 7000),
('Ramya', 'Ramapriya', 25, 5000),
('Mac', 'Mohan', 26, 2000);

獲得的 EMP 表如下所示:

FIRST_NAME LAST_NAME AGE INCOME
Krishna Sharma 19 2000
Raj Kandukuri 20 7000
Ramya Ramapriya 25 5000
Mac Mohan 26 2000

以下查詢返回 EMP 表中 'LAST_NAME' 列實體的子字串:

SELECT FIRST_NAME, LAST_NAME, AGE, SUBSTR(LAST_NAME, 4) as result
FROM EMP;

輸出

執行上述程式碼後,我們得到以下輸出:

FIRST_NAME LAST_NAME AGE 結果
Krishna Sharma 19 rma
Raj Kandukuri 20 dukuri
Ramya Ramapriya 25 apriya
Mac Mohan 26 an

示例

以下查詢返回 'LAST_NAME' 列從第二個字元開始幷包含接下來的五個字元的子字串:

SELECT FIRST_NAME, LAST_NAME, AGE, SUBSTR(LAST_NAME, 2, 5) as result
FROM EMP;

輸出

執行上述程式碼後,我們得到以下輸出:

FIRST_NAME LAST_NAME AGE 結果
Krishna Sharma 19 harma
Raj Kandukuri 20 anduk
Ramya Ramapriya 25 amapr
Mac Mohan 26 ohan
mysql-substr-function.htm
廣告