MySQL中字串函數的詳解

零下一度
發布: 2017-07-17 11:01:44
原創
1391 人瀏覽過

今天在論壇中看到一個關於mysql的問題,問題如下

good_id       cat_id
12654         665,569
12655#1  cat_id是分類id

當我,怎麼根據這種分類ID查資料(一個商品有多個分類,而且用逗號隔開了)

我現在用的是like 這樣的話,輸入一個分類id是688,或4722都能出來這個商品,但輸入一個722也出來這個商品了。

 

如果用like做的話,一定會有問題的,我的開始的想法是,把cat_id裡面的字串換成數組,這樣可以利用mysql裡面的in操作,這樣就不會出現查找722,而4722類別下的產品都跑出來了。我從網路上找了半天,這方面的字串操作函數,沒找到,不過我發現了find_in_set這個函數雖然不能,將字串轉換成數組,但是也不會出現上面的情況。我發現自己有好多函數不知道,所以我從手冊中,以及網上收集了半天,做了一些例子。

 CHAR_LENGTH(str) 傳回str的字元數

#LENGTH(str) 傳回str的位元組長度

#CONCAT(str1,str2....) 傳回參數str1,str2....的拼接,有一個null值則回傳null

CONCAT_WS (x,str1,str2...)   ---concat with separator  第一個參數x代表分隔符號,後面的參數為字串

如果x為NULL則回傳NULL,如果字串有NULL會被忽略

INSERT(s1,x,len,s2) 字串取代 s1 目標字串  x為s1的開始位置(下標從1開始) len為x之後的長度s2為需要替換的字串

如果x超過s1的長度下標,則傳回s1,如果len大於x之後剩餘字串長度,則全部替換

LOWER(str)、LCASE(str) 字串轉為小寫

#UPPER(str)、UCASE(str) 字串轉為大寫

LEFT(str,n) 傳回字串str最左邊的n個字元

RIGHT(str ,n) 傳回字串str最右邊的n個字元

 LPAD(s1,len,s2) 傳回s2從s1的左邊填入直到總長度為len,如果len

RPAD(s1,len,s2) 返回s2從s1的右邊填充直至len的長度,如果len

LTRIM(S) 刪除左側的空格RTRIM(s) 刪除右側的空格 TRIM(s) 刪除兩側的空格

#TRIM(s1 FROM s2) 刪除s2兩端出現的s1字串

REPEAT(s,n) 傳回n個s組成的字串,n<=0,回傳空;s或n為NULL,回傳NULL

SPACE(n) 傳回n個空格字串

#REPLACE(s,s1,s2) 傳回--由s2取代s中的所有s1字串的結果

STRCPM(s1,s2) s1==s2 回傳0   s1s2 回傳1

#SUBSTRING(s,n,len) 、MID(s,n,len)回傳s從n開始的len長度的字串,若n<0,則從s的最後倒數n個開始截取,n=0的話回傳空字串;len可以省略-截取n之後的所有字元

LOCATE(str1,str2)、POSITION(str1 IN str2)、INSTR(str2,str1) 傳回str1在str2中出現的起始位置

REVERSE(s) 傳回s的字串的反轉

ELT(n,str1,str2, str3...)   回傳str1,str2..  中的第n個字串 ,n超出返回返回null

FIELD(s,str1,str2,str3.. ..) 回傳s在str1,str2.....中的第一次出現的位置,沒有回傳0

 

FIND_IN_SET(s,str1)  回傳s在str1中的出現的位置,其中str1由多個字串組成,逗號隔開的列表

 

以上是MySQL中字串函數的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板