MySQL字符串截取函數主要有:left(), right(), substring(), substring_index() 四種。各有其使用場景。今天,讓我帶大家花幾分鐘時間來熟知它們,Mark!
小夥伴想精準查找自己想看的MySQL文章?喏 → MySQL專欄目錄 | 點擊這裡
聲明一下:在MySQL中,下標索引是從1開始的,而不是像java中從0開始的喔!
LEFT(string,length) ,從字符串string左邊第一位開始,截取長度為length個字符。length應大於0,如>=0,返回空字符串。示例如下:
mysql> SELECT LEFT(&39;,5) from web_info w;+------------------+| LEFT(&39;,5) |+------------------+| www.c |+------------------+1 row in set (0.00 sec)
LEFT(string,length) ,從字符串string右邊第一位開始,截取長度為length個字符,仍然是正向順序截取。length應大於0,如>=0,返回空字符串。
mysql> SELECT RIGHT(&39;,5) from web_info w;+-------------------------+| RIGHT(&39;,5) |+-------------------------+| n.net |+-------------------------+1 row in set (0.00 sec)
substring()是專門用來對字符串進行切分的函數,主要有兩種形式:
以下是上述兩類語句的SQL標準版本寫法,意義相同,它更長,但更具表現力。
SUBSTRING(string FROM position);SUBSTRING(string FROM position FOR length);
下面讓我們來一起看一下SUBSTRING()的兩種用法示例;
例如,從「www.csdn.net」字符串中獲取子字符串:「csdn.net」,子串的位置必須從5開始,如以下SELECT語句:
mysql> SELECT substring(&39;,5) from web_info w;+-----------------------------+| substring(&39;,5) |+-----------------------------+| csdn.net |+-----------------------------+1 row in set (0.00 sec)
除了string和position參數之外,SUBSTRING函數還有一個length參數。length是一個正整數,用於指定子字符串的字符數。如果length<=0,那麼會返回空字符串。
例如,獲取www.csdn.net中的csdn,SQL如下:
mysql> SELECT substring(&39;,5,4) from web_info w;+-------------------------------+| substring(&39;,5,4) |+-------------------------------+| csdn |+-------------------------------+1 row in set (0.00 sec)
或者通過配置position,從後往前數;SQL如下:
mysql> SELECT substring(&39;,-8,4) from web_info w;+--------------------------------+| substring(&39;,-8,4) |+--------------------------------+| csdn |+--------------------------------+1 row in set (0.00 sec)
又或者通過SQL標準方式來寫,SQL如下:
mysql> SELECT substring(&39; FROM 5 FOR 4) from web_info w;+----------------------------------------+| substring(&39; FROM 5 FOR 4) |+----------------------------------------+| csdn |+----------------------------------------+1 row in set (0.00 sec)
另外,MySQL中的 mid(), substr() 等價於 substring() 函數哦!
SUBSTRING_INDEX(str,delim,count),是一個通過特定標識符&34;來截取子串的函數,我們日常使用頻率是很高的;
例如:『www.csdn.net』,獲取第一次出現標識符』.&39;www.csdn.net&39;.&39;www.csdn.net&39;.&39;後面的子串,SQL如下;
mysql> SELECT SUBSTRING_INDEX(&39;,&39;,-2) from web_info w;+----------------------------------------+| SUBSTRING_INDEX(&39;,&39;,-2) |+----------------------------------------+| csdn.net |+----------------------------------------+1 row in set (0.00 sec)
想獲取兩個』.&39;www.csdn.net&39;.&39;.&39;www.csdn.net&39;.&39;.&39;.&39;.&39;.',-2) ;
修改後查詢:
mysql> SELECT * from web_info;+------+--------+------------+---------------------+| w_id | w_name | w_domain | pub_time |+------+--------+------------+---------------------+| 1 | CSDN | csdn.net | 2020-09-03 14:54:59 || 5 | 百度 | baidu.com | 2020-09-03 14:54:59 || 6 | 淘寶 | taobao.com | 2020-09-03 14:54:59 |+------+--------+------------+---------------------+3 rows in set (0.00 sec)
好了,MySQL的字符串切分函數今天就說到這兒,如果對小夥伴兒有用,請不要白嫖哦~~