Mysql字串操作總結

2021-09-02 14:48:40 字數 1671 閱讀 5455

一、字串連線

1、concat(string1,string2,…)  

說明 : string1,string2代表字串,concat函式在連線字串的時候,只要其中乙個是null,那麼將返回null

select concat('1','2',null) from dual 結果返回null, select concat('1','2','3') from dual 執行結果返回123

2、concat_ws(separator,str1,str2,...)

說明 : string1,string2代表字串,concat_ws 代表 concat with separator,第乙個引數是其它引數的分隔符。分隔符的位置放在要連線的兩個字串之間。分隔符可以是乙個字串,也可以是其它引數。如果分隔符為 null,則結果為 null。函式會忽略任何分隔符引數後的 null 值。

select concat_ws("#",'1','2','3') from dual 結果返回1#2#3, select concat_ws(null,'1','2','3') from dual結果返回null

3、group_concat([distinct] 要連線的字段 [order by asc/desc 排序字段] [separator '分隔符']) 

例如:select uid, group_concat(authority_cd order by authority_cd desc separator ' ## ') role

from user group by uid;

uid                                     role

1         user ## operator ## auditor ## admin

對於同乙個uid的role按照降序排序並以##分隔符隔開

二、判斷是否包含

1、select * from test where emaillike"%@email.com%"

此方法效率不是很高,所以一般不是很常用

2、利用mysql 字串函式find_in_set(str,strlist)strlist是以逗號隔開的字串列表(,)比如   '1,2,3,4'

select * from test wherefind_in_set('4', '1,2,3,4'); 如果存在則返回其str所在strlist中的索引值,需要注意的是索引不是從0開始的;不存在,返回的是0;

selectfind_in_set('4','1,2,,,,,,5,,') from dual,返回的結果是0 ; selectfind_in_set('4','1,4,,4,,,,5,,') from dual 返回的結果是2,並且返回的是首個符合條件的。

3、使用locate(substr, str)函式,如果包含,返回》0的數,否則返回0  ,此函式表示的是指定的子串是否在字串中出現,同樣是返回的首個子串索引

select locate('4','1,123,4') from dual 返回結果是 7 ,也是從1開始計算的索引值  

筆者會根據實際使用到的情況,會不定期進行補充更新。

字串操作總結

可返回指定位置的字元。string.charat index 引數 描述 index 必需。表示字串中某個位置的數字,即字元在字串中的位置。可返回某個指定的字串值在字串中首次出現的位置,如果沒有找到匹配的字串則返回 1。stringobject.indexof searchvalue,start 引...

mysql 字串操作

函式各函式的功能說明 函式concat s1,s2,返回連線引數產生的字串,乙個或多個待拼接的內容,任意乙個為null則返回值為null。concat ws x,s1,s2,返回多個字串拼接之後的字串,每個字串之間有乙個x。substring s,n,len mid s,n,len 兩個函式作用相同...

MySQL字串操作

擷取 1.欄位右側擷取 right 欄位名 長度 select right user affiliate,3 from usertable 2.欄位左側擷取 left 欄位名 長度 select left user affiliate,3 from usertable 3.中間擷取 substrin...