文中給大家介紹MySQL 字符串截取相關函數(shù),具體內(nèi)容如下所示:
在工作中,可能需要將某些字段按某個分割符組成一個字符串作為字段值存取到數(shù)據(jù)庫表中,比如某個任務對應三個結果,分別存儲在不同的數(shù)據(jù)表中,這時可以將這三個不同表的主鍵按照約定的順序進行組合(主鍵a:主鍵b:主鍵c)。當需要分別去查任務對應類別的詳情信息時,可以截取特定位置的字符串(主鍵b) join 表b進行操作。正好最近也遇到這塊操作,特意將 MySQL 字符串截取的相關函數(shù)做一個梳理,以便今后回顧。
一、left(str, len)
返回字符串 str 自左數(shù)的 len 個字符。如果任一參數(shù)為 NULL,則返回 NULL。
mysql> select left('shinejaie', 5);
+---------------------------------------------------------+
| left('shinejaie', 5) |
+---------------------------------------------------------+
| shine |
+---------------------------------------------------------+
1 row in set (0.00 sec)
二、right(str, len)
返回 str 右邊末 len 位的字符。如果有的參數(shù)是 NULL 值,則返回 NULL。
mysql> select right('shinejaie', 4);
+---------------------------------------------------------+
| right('shinejaie', 4) |
+---------------------------------------------------------+
| jaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
三、substring_index(str, delim, count)
返回 str 中第 count 次出現(xiàn)的分隔符 delim 之前的子字符串。如果 count 為正數(shù),將最后一個分隔符左邊(因為是從左數(shù)分隔符)的所有內(nèi)容作為子字符串返回;如果 count 為負值,返回最后一個分隔符右邊(因為是從右數(shù)分隔符)的所有內(nèi)容作為子字符串返回。在尋找分隔符時,函數(shù)對大小寫是敏感的。如果在字符串 str 中找不到 delim 參數(shù)指定的值,就返回整個字符串。
mysql> select substring_index('home.cnblogs.com', '.', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '.', 2) |
+---------------------------------------------------------+
| home.cnblogs |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select substring_index('home.cnblogs.com', '/', 2);
+---------------------------------------------------------+
| substring_index('home.cnblogs.com', '/', 2) |
+---------------------------------------------------------+
| home.cnblogs.com |
+---------------------------------------------------------+
1 row in set (0.00 sec)
四、substring() 與 substr() ---> substring(str, pos)、substring(str from pos)、substring(str, pos, len)、substring(str from pos for len)
在以上4種函數(shù)變種形式中,沒有 len 參數(shù)的函數(shù)形式會返回自 str 中位置 pos 處之后的子字符串;有 len 參數(shù)的函數(shù)形式會返回自 str 中位置 pos 處之后,長度為 len 的子字符串。使用 FROM 的函數(shù)形式則是采用的標準的 SQL 語法。pos 參數(shù)也可能取負值,在這種情況下,取字符串的方式是從字符串 str 的末尾向前(而非從前往后),從這種逆向順序的 pos 處開始取字符串。另外,負值的 pos 參數(shù)可用于任何形式的 substring() 函數(shù)中。
mysql> select substring('shinejaie', 6);
+---------------------------------------------------------+
| substring('shinejaie',6) |
+---------------------------------------------------------+
| jaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select substr('shinejaie' from 6);
+---------------------------------------------------------+
| substr('shinejaie' from 6) |
+---------------------------------------------------------+
| jaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select substring('shinejaie', -9, 5);
+---------------------------------------------------------+
| substring('shinejaie', -9, 5) |
+---------------------------------------------------------+
| shine |
+---------------------------------------------------------+
1 row in set (0.00 sec)
五、trim([{both | leading | trailing} [remstr] form] str)
將字符串 str去除 remstr 所指定的前綴或后綴,返回結果字符串。如果沒有指定標識符both、leading,或trailing,則默認采用 both,即將前后綴都刪除。remstr 其實是個可選參數(shù),如果沒有指定它,則刪除的是空格。
mysql> select trim(' shinejaie ');
+---------------------------------------------------------+
| trim(' shinejaie ') |
+---------------------------------------------------------+
| shinejaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select trim(leading 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(leading 'cn_' from 'cn_shinejaiecn_') |
+---------------------------------------------------------+
| shinejaiecn_ |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select trim(both 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(both 'cn_' from 'cn_shinejaiecn_') |
+---------------------------------------------------------+
| shinejaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select trim(trailing 'cn_' from 'cn_shinejaiecn_');
+---------------------------------------------------------+
| trim(trailing 'cn_' from 'cn_shinejaiecn_') |
+---------------------------------------------------------+
| cn_shinejaie |
+---------------------------------------------------------+
1 row in set (0.00 sec)
總結
以上所述是小編給大家介紹的MySQL 字符串截取相關函數(shù)小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- Mysql字符串截取函數(shù)SUBSTRING的用法說明
- MySql用DATE_FORMAT截取DateTime字段的日期值
- MySQL截取和拆分字符串函數(shù)用法示例
- Mysql字符串截取及獲取指定字符串中的數(shù)據(jù)
- mysql截取的字符串函數(shù)substring_index的用法
- mysql 截取指定的兩個字符串之間的內(nèi)容
- MySQL 截取字符串函數(shù)的sql語句
- mysql截取函數(shù)常用方法使用說明
- mysql中循環(huán)截取用戶信息并插入到目標表對應的字段中
- MySQL查詢截取的深入分析