MySQL substring()函式

2019-10-16 22:54:47

在本教學中,我們將向您介紹MySQL SUBSTRING函式從字串中提取子字串。

SUBSTRING函式從特定位置開始的字串返回一個給定長度的子字串。 MySQL提供了各種形式的子串功能。

我們將在以下部分中檢查SUBSTRING函式的每種形式。

SUBSTRING(string,position);
SUBSTRING(string FROM position);

有兩個引數:

  • string引數是要提取子字串的字串。
  • position引數是一個整數,用於指定子串的起始字元,position可以是正或負整數。

如果position為正,則SUBSTRING函式從字串的開始處提取子字串。請參閱以下字串。

例如,要從「MySQL SUBSTRING」字串中獲取子字串:「SUBSTRING」,子串的位置必須從7開始,如以下SELECT語句:

mysql> SELECT SUBSTRING('MYSQL SUBSTRING', 7);
+---------------------------------+
| SUBSTRING('MYSQL SUBSTRING', 7) |
+---------------------------------+
| SUBSTRING                       |
+---------------------------------+
1 row in set

請注意,如果position引數為零,則SUBSTRING函式返回一個空字串:

mysql> SELECT SUBSTRING('MYSQL SUBSTRING', 0);
+---------------------------------+
| SUBSTRING('MYSQL SUBSTRING', 0) |
+---------------------------------+
|                                 |
+---------------------------------+
1 row in set

除了特定於MySQL的語法之外,可以使用SQL標準語法與FROM關鍵字一起呼叫SUBSTRING函式。

例如,以下語句使用SQL標準語法從"MySQL SUBSTRING"字串中獲取"SUBSTRING"

mysql> SELECT SUBSTRING('MySQL SUBSTRING' FROM -10);
+---------------------------------------+
| SUBSTRING('MySQL SUBSTRING' FROM -10) |
+---------------------------------------+
|  SUBSTRING                            |
+---------------------------------------+
1 row in set

MySQL SUBSTRING具有位置和長度

如果要指定要從字串中提取的子字串的長度,可以使用以下形式的SUBSTRING函式:

SUBSTRING(string,position,length);

以下是上述語句的SQL標準版本,它更長,但更具表現力。

SUBSTRING(string FROM position FOR length);

除了stringposition引數之外,SUBSTRING函式還有一個額外的length引數。length是一個正整數,用於指定子字串的字元數。

如果positionlength的總和大於字串的字元數,則SUBSTRING函式將返回一個從位置開始到字串末尾的子串。

例如,要從"MySQL SUBSTRING"獲取"MySQL",請使用以下語句:

mysql> SELECT SUBSTRING('MySQL SUBSTRING',1,5);
+----------------------------------+
| SUBSTRING('MySQL SUBSTRING',1,5) |
+----------------------------------+
| MySQL                            |
+----------------------------------+
1 row in set

又或者 -

mysql> SELECT SUBSTRING('MySQL SUBSTRING' FROM 1 FOR 5);
+-------------------------------------------+
| SUBSTRING('MySQL SUBSTRING' FROM 1 FOR 5) |
+-------------------------------------------+
| MySQL                                     |
+-------------------------------------------+
1 row in set

或者使用FROM FOR語法:

mysql> SELECT SUBSTRING('MySQL SUBSTRING' FROM -15 FOR 5);
+---------------------------------------------+
| SUBSTRING('MySQL SUBSTRING' FROM -15 FOR 5) |
+---------------------------------------------+
| MySQL                                       |
+---------------------------------------------+
1 row in set

SUBSTR()函式是SUBSTRING()函式的同義詞,所以可以互換使用它們。

在本教學中,您已經了解了和使用SUBSTRING()函式從指定位置開始的字串中提取具有給定長度的子字串。