MySQL 字符串截取相關(guān)函數(shù)小結(jié)
文中給大家介紹MySQL 字符串截取相關(guān)函數(shù),具體內(nèi)容如下所示:
在工作中,可能需要將某些字段按某個(gè)分割符組成一個(gè)字符串作為字段值存取到數(shù)據(jù)庫表中,比如某個(gè)任務(wù)對(duì)應(yīng)三個(gè)結(jié)果,分別存儲(chǔ)在不同的數(shù)據(jù)表中,這時(shí)可以將這三個(gè)不同表的主鍵按照約定的順序進(jìn)行組合(主鍵a:主鍵b:主鍵c)。當(dāng)需要分別去查任務(wù)對(duì)應(yīng)類別的詳情信息時(shí),可以截取特定位置的字符串(主鍵b) join 表b進(jìn)行操作。正好最近也遇到這塊操作,特意將 MySQL 字符串截取的相關(guān)函數(shù)做一個(gè)梳理,以便今后回顧。
一、left(str, len)
返回字符串 str 自左數(shù)的 len 個(gè)字符。如果任一參數(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ù),將最后一個(gè)分隔符左邊(因?yàn)槭菑淖髷?shù)分隔符)的所有內(nèi)容作為子字符串返回;如果 count 為負(fù)值,返回最后一個(gè)分隔符右邊(因?yàn)槭菑挠覕?shù)分隔符)的所有內(nèi)容作為子字符串返回。在尋找分隔符時(shí),函數(shù)對(duì)大小寫是敏感的。如果在字符串 str 中找不到 delim 參數(shù)指定的值,就返回整個(gè)字符串。
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ù)形式會(huì)返回自 str 中位置 pos 處之后的子字符串;有 len 參數(shù)的函數(shù)形式會(huì)返回自 str 中位置 pos 處之后,長度為 len 的子字符串。使用 FROM 的函數(shù)形式則是采用的標(biāo)準(zhǔn)的 SQL 語法。pos 參數(shù)也可能取負(fù)值,在這種情況下,取字符串的方式是從字符串 str 的末尾向前(而非從前往后),從這種逆向順序的 pos 處開始取字符串。另外,負(fù)值的 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 所指定的前綴或后綴,返回結(jié)果字符串。如果沒有指定標(biāo)識(shí)符both、leading,或trailing,則默認(rèn)采用 both,即將前后綴都刪除。remstr 其實(shí)是個(gè)可選參數(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)
總結(jié)
以上所述是小編給大家介紹的MySQL 字符串截取相關(guān)函數(shù)小結(jié),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
MySQL高級(jí)篇之索引的數(shù)據(jù)結(jié)構(gòu)詳解
在MySQL中索引屬于存儲(chǔ)引擎級(jí)別的概念,不同存儲(chǔ)引擎對(duì)索引的實(shí)現(xiàn)方式是不同的,下面這篇文章主要給大家介紹了關(guān)于MySQL高級(jí)篇之索引數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-05-05win10 安裝mysql 8.0.18-winx64的步驟詳解
這篇文章主要介紹了win10 安裝mysql 8.0.18-winx64的步驟,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11MySQL中使用load data命令實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入的方法
MySQL支持load data命令的數(shù)據(jù)導(dǎo)入,該方式比直接的insert的效率要高,按照官方的說法是要比insert語句快上20倍2013-10-10如何在Windows中運(yùn)行多個(gè)MySQL實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于如何在Windows中運(yùn)行多個(gè)MySQL實(shí)例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09