這篇文章主要介紹了Mysql字符串處理函數詳細介紹、總結,需要的朋友可以參考下
一、簡明總結 ASCII(char) 返回字符的ASCII碼值 BIT_LENGTH(str) 返回字符串的比特長度 CONCAT(s1,s2…,sn) 將s1,s2…,sn連接成字符串 CONCAT_WS(sep,s1,s2…,sn) 將s1,s2…,sn連接成字符串,並用sep字符間隔 INSERT(str,x,y,instr) 將字符串str從第x位置開始,y個字符長的子串替換為字符串instr,返回結果 FIND_IN_SET(str,list) 分析逗號分隔的list列表,如果發現str,返回str在list中的位置 LCASE(str)或LOWER(str) 返回將字符串str中所有字符改變為小寫後的結果 LEFT(str,x) 返回字符串str中最左邊的x個字符 LENGTH(s) 返回字符串str中的字符數 LTRIM(str) 從字符串str中切掉開頭的空格 POSITION(substr,str) 返回子串substr在字符串str中第一次出現的位置 QUOTE(str) 用反斜槓轉義str中的單引號 REPEAT(str,srchstr,rplcstr)返回字符串str重復x次的結果 REVERSE(str) 返回顛倒字符串str的結果 RIGHT(str,x) 返回字符串str中最右邊的x個字符 RTRIM(str) 返回字符串str尾部的空格 STRCMP(s1,s2) 比較字符串s1和s2 TRIM(str) 去除字符串首部和尾部的所有空格 UCASE(str)或UPPER(str) 返回將字符串str中所有字符轉變為大寫後的結果 二、詳細總結 1.ASCII(str) 返回值為字符串str 的最左字符的數值,即取得最左字符的ascii碼。 假如str為空字符串,則返回值為 0 。假如str 為NULL,則返回值為 NULL。 ASCII()用於帶有從 0到255的數值的字符。 2.BIN(N) 返回值為N的二進制值的字符串表示,即轉為二進制。 其中 N 為一個longlong (BIGINT) 數字。這等同於 CONV(N,10,2)。假如N 為NULL,則返回值為 NULL。 3.BIT_LENGTH(str) 返回值為二進制的字符串str 長度。 4.CHAR(N,... [USING charset]) CHAR()將每個參數N理解為一個整數,其返回值為一個包含這些整數的代碼值所給出的字符的字符串。NULL值被省略。 即將所有參數轉為字符後連接在一起。 5.CHAR_LENGTH(str) 返回值為字符串str 的長度,長度的單位為字符。 6.CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同義詞。 7.COMPRESS(string_to_compress) 壓縮一個字符串。 8.CONCAT(str1,str2,...) 返回結果為連接參數產生的字符串。 9.CONCAT_WS(separator,str1,str2,...) CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一個參數是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。 分隔符可以是一個字符串,也可以是其它參數。如果分隔符為 NULL,則結果為 NULL。函數會忽略任何分隔符參數後的 NULL 值。 10.CONV(N,from_base,to_base) 不同數基間轉換數字。返回值為數字的N字符串表示,由from_base基轉化為 to_base 基。如有任意一個參數為NULL,則返回值為 NULL。 自變量 N 被理解為一個整數,但是可以被指定為一個整數或字符串。最小基數為 2 ,而最大基數則為 36。 11.ELT(N,str1,str2,str3,...) 若N = 1,則返回值為 str1 ,若N = 2,則返回值為 str2 ,以此類推。 若N 小於1或大於參數的數目,則返回值為 NULL 。 12.EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) 返回值為一個字符串,其中對於bits值中的每個位組,可以得到一個 on 字符串,而對於每個清零比特位,可以得到一個off 字符串。 bits 中的比特值按照從右到左的順序接受檢驗 (由低位比特到高位比特)。 字符串被分隔字符串分開(默認為逗號‘,'),按照從左到右的順序被添加到結果中。number_of_bits 會給出被檢驗的二進制位數 (默認為 64)。 13.FIELD(str,str1,str2,str3,...) 返回值為str1, str2, str3,……列表中的str 指數(位置)。在找不到str 的情況下,返回值為 0 。 如果所有對於FIELD() 的參數均為字符串,則所有參數均按照字符串進行比較。 如果所有的參數均為數字,則按照數字進行比較。否則,參數按照雙倍進行比較。 14.FIND_IN_SET(str,strlist) 假如字符串str 在由N 子鏈組成的字符串列表strlist 中, 則返回值的范圍在 1 到 N 之間(即str在strlist中的位置) 。 一個字符串列表就是一個由一些被‘,'符號分開的自鏈組成的字符串。 15.FORMAT(X,D) 將數字X 的格式寫為'#,###,###.##',以四捨五入的方式保留小數點後 D 位, 並將結果以字符串的形式返回。 若 D 為 0, 則返回結果不帶有小數點,或不含小數部分。 16.HEX(N_or_S) 如果N_OR_S 是一個數字,則返回一個 十六進制值 N 的字符串表示,在這裡,N 是一個longlong (BIGINT)數。這相當於 CONV(N,10,16)。 17.INSERT(str,pos,len,newstr) (str中的字符被newstr替換) 返回字符串 str, 其子字符串起始於 pos 位置和長期被字符串 newstr取代的len 字符。 如果pos 超過字符串長度,則返回值為原始字符串。 假如len的長度大於其它字符串的長度,則從位置pos開始替換。若任何一個參數為null,則返回值為NULL。 18.INSTR(str,substr) 返回字符串 str 中子字符串的第一個出現位置。這和LOCATE()的雙參數形式相同,除非參數的順序被顛倒。 19.LCASE(str) LCASE() 是 LOWER()的同義詞。 20.LEFT(str,len) 返回從字符串str 開始的len 最左字符。 21.LENGTH(str) 返回值為字符串str 的長度,單位為字節。一個多字節字符算作多字節。 這意味著 對於一個包含5個2字節字符的字符串, LENGTH() 的返回值為 10, 而 CHAR_LENGTH()的返回值則為5。 22.LOAD_FILE(file_name) (不錯) 讀取文件並將這一文件按照字符串的格式返回。 例: 代碼如下:mysql> UPDATE tbl_name SET blob_column=LOAD_FILE('/tmp/picture') WHERE id=1; 23.LOCATE(substr,str) , LOCATE(substr,str,pos) 第一個語法返回字符串 str中子字符串substr的第一個出現位置。 第二個語法返回字符串 str中子字符串substr的第一個出現位置, 起始位置在pos。如若substr 不在str中,則返回值為0。 24.LOWER(str) 返回字符串 str 以及所有根據最新的字符集映射表變為小寫字母的字符 (默認為 cp1252 Latin1)。 25.LPAD(str,len,padstr) 返回字符串 str, 其左邊由字符串padstr 填補到len 字符長度。假如str 的長度大於len, 則返回值被縮短至 len 字符。 即在str前面添加長度為len的padstr. 26.LTRIM(str) 返回字符串 str ,其引導空格字符被刪除。 27.MAKE_SET(bits,str1,str2,...) 返回一個設定值 (一個包含被‘,'號分開的字字符串的字符串) ,由在bits 組中具有相應的比特的字符串組成。 str1 對應比特 0, str2 對應比特1,以此類推。str1, str2, ...中的 NULL值不會被添加到結果中。 28.MID(str,pos,len) MID(str,pos,len) 是 SUBSTRING(str,pos,len)的同義詞。 29.OCT(N) 返回一個 N的八進制值的字符串表示,其中 N 是一個longlong (BIGINT)數。這等同於CONV(N,10,8)。若N 為 NULL ,則返回值為NULL。 30.OCTET_LENGTH(str) OCTET_LENGTH() 是 LENGTH()的同義詞。 31.ORD(str) 若字符串str 的最左字符是一個多字節字符,則返回該字符的代碼, 假如最左字符不是一個多字節字符,那麼 ORD()和函數ASCII()返回相同的值。 32.POSITION(substr IN str) POSITION(substr IN str)是 LOCATE(substr,str)同義詞。 33.QUOTE(str) 引證一個字符串,由此產生一個在SQL語句中可用作完全轉義數據值的結果。 34.REPEAT(str,count) 返回一個由重復的字符串str 組成的字符串,字符串str的數目等於count 。 若 count <= 0,則返回一個空字符串。若str 或 count 為 NULL,則返回 NULL 。 35.REPLACE(str,from_str,to_str) 返回字符串str 以及所有被字符串to_str替代的字符串from_str 。 36.REVERSE(str) 返回字符串 str ,順序和字符順序相反。 37.RIGHT(str,len) 從字符串str 開始,返回最右len 字符。 38.RPAD(str,len,padstr) 返回字符串str, 其右邊被字符串 padstr填補至len 字符長度。 假如字符串str 的長度大於 len,則返回值被縮短到與 len 字符相同長度。 39.RTRIM(str) 返回字符串 str ,結尾空格字符被刪去。 40.SOUNDEX(str) 從str返回一個soundex字符串。 41.SPACE(N) 返回一個由N 間隔符號組成的字符串。 42.SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len) SUBSTR()是 SUBSTRING()的同義詞。 不帶有len 參數的格式從字符串str返回一個子字符串,起始於位置 pos。 帶有len參數的格式從字符串str返回一個長度同len字符相同的子字符串,起始於位置 pos。 使用 FROM的格式為標准 SQL 語法。也可能對pos使用一個負值。 假若這樣,則子字符串的位置起始於字符串結尾的pos 字符,而不是字符串的開頭位置。 43.SUBSTRING_INDEX(str,delim,count) 在定界符 delim 以及count 出現前,從字符串str返回自字符串。 若count為正值,則返回最終定界符(從左邊開始)左邊的一切內容。若count為負值,則返回定界符(從右邊開始)右邊的一切內容。 44.TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str) 返回字符串 str , 其中所有remstr 前綴和/或後綴都已被刪除。 若分類符BOTH、LEADIN或TRAILING中沒有一個是給定的,則假設為BOTH 。 remstr 為可選項,在未指定情況下,可刪除空格。 45.UCASE(str) UCASE()是UPPER()的同義詞。 46.UNCOMPRESS(string_to_uncompress) 對經COMPRESS()函數壓縮後的字符串進行解壓縮。 47.UNCOMPRESSED_LENGTH(compressed_string) 返回壓縮字符串壓縮前的長度。 48.UNHEX(str) 執行從HEX(str)的反向操作。就是說,它將參數中的每一對十六進制數字理解為一個數字,並將其轉化為該數字代表的字符。 結果字符以二進制字符串的形式返回。 49.UPPER(str) 返回字符串str, 以及根據最新字符集映射轉化為大寫字母的字符 (默認為cp1252 Latin1). 50.模式匹配:通配符 % ------- 匹配任何數目的字符,甚至包括零字符 _ ------- 只能匹配一種字符 轉義用‘/' 51.STRCMP(expr1,expr2) 若所有的字符串均相同,則返回STRCMP(),若根據當前分類次序,第一個參數小於第二個,則返回 -1,其它情況返回 1 。 附:小提示 MySQL必要時自動變換數字為字符串,並且反過來也如此: mysql> SELECT 1+"1"; -> 2mysql> SELECT CONCAT(2,' test'); -> '2 test' 如果你想要明確地變換一個數字到一個字符串,把它作為參數傳遞到CONCAT()。 如果字符串函數提供一個二進制字符串作為參數,結果字符串也是一個二進制字符串。被變換到一個字符串的數字被當作是一個二進制字符串。這僅影響比較。 mysql 連接字符串與SQL不同 以前用SQL Server 連接字符串是用“+”,現在數據庫用mysql,寫個累加兩個字段值SQL語句居然不支持"+",郁悶了半天在網上查下,才知道mysql裡的+是數字相加的操作,連接字符串是CONCAT函數 例: mysql> select CONCAT('My', '_', '2001'); -> 'My_2001'