共計(jì) 6931 個(gè)字符,預(yù)計(jì)需要花費(fèi) 18 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“MYSQL 的字符串函數(shù)具體用法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
對(duì)于針對(duì)字符串位置的操作,第一個(gè)位置被標(biāo)記為 1。
ASCII(str)
返回字符串 str 的最左面字符的 ASCII 代碼值。如果 str 是空字符串,返回 0。如果 str 是 NULL,返回 NULL。
mysql select ASCII(2
– 50
mysql select ASCII(2);
– 50
mysql select ASCII(dx
– 100
也可參見(jiàn) ORD()函數(shù)。
ORD(str)
如果字符串 str 最左面字符是一個(gè)多字節(jié)字符,通過(guò)以格式 ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code…] 返回字符的 ASCII 代碼值來(lái)返回多字節(jié)字符代碼。如果最左面的字符不是一個(gè)多字節(jié)字符。返回與 ASCII()函數(shù)返回的相同值。
mysql select ORD(2
– 50
CONV(N,from_base,to_base)
在不同的數(shù)字基之間變換數(shù)字。返回?cái)?shù)字 N 的字符串?dāng)?shù)字,從 from_base 基變換為 to_base 基,如果任何參數(shù)是 NULL,返回 NULL。參數(shù) N 解釋為一個(gè)整數(shù),但是可以指定為一個(gè)整數(shù)或一個(gè)字符串。最小基是 2 且最大的基是 36。如果 to_base 是一個(gè)負(fù)數(shù),N 被認(rèn)為是一個(gè)有符號(hào)數(shù),否則,N 被當(dāng)作無(wú)符號(hào)數(shù)。CONV 以 64 位點(diǎn)精度工作。
mysql select CONV(a ,16,2);
– 1010
mysql select CONV(6E ,18,8);
– 172
mysql select CONV(-17,10,-18);
– -H
mysql select CONV(10+ 10 + 10 +0xa,10,10);
– 40
BIN(N)
返回二進(jìn)制值 N 的一個(gè)字符串表示,在此 N 是一個(gè)長(zhǎng)整數(shù) (BIGINT) 數(shù)字,這等價(jià)于 CONV(N,10,2)。如果 N 是 NULL,返回 NULL。
mysql select BIN(12);
– 1100
OCT(N)
返回八進(jìn)制值 N 的一個(gè)字符串的表示,在此 N 是一個(gè)長(zhǎng)整型數(shù)字,這等價(jià)于 CONV(N,10,8)。如果 N 是 NULL,返回 NULL。
mysql select OCT(12);
– 14
HEX(N)
返回十六進(jìn)制值 N 一個(gè)字符串的表示,在此 N 是一個(gè)長(zhǎng)整型 (BIGINT) 數(shù)字,這等價(jià)于 CONV(N,10,16)。如果 N 是 NULL,返回 NULL。
mysql select HEX(255);
– FF
CHAR(N,…)
CHAR()將參數(shù)解釋為整數(shù)并且返回由這些整數(shù)的 ASCII 代碼字符組成的一個(gè)字符串。NULL 值被跳過(guò)。
mysql select CHAR(77,121,83,81, 76
– MySQL
mysql select CHAR(77,77.3, 77.3
– MMM
CONCAT(str1,str2,…)
返回來(lái)自于參數(shù)連結(jié)的字符串。如果任何參數(shù)是 NULL,返回 NULL。可以有超過(guò) 2 個(gè)的參數(shù)。一個(gè)數(shù)字參數(shù)被變換為等價(jià)的字符串形式。
mysql select CONCAT(My , S , QL
– MySQL
mysql select CONCAT(My , NULL, QL
– NULL
mysql select CONCAT(14.3);
– 14.3
LENGTH(str)
OCTET_LENGTH(str)
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
返回字符串 str 的長(zhǎng)度。
mysql select LENGTH(text
– 4
mysql select OCTET_LENGTH(text
– 4
注意,對(duì)于多字節(jié)字符,其 CHAR_LENGTH()僅計(jì)算一次。
LOCATE(substr,str)
POSITION(substr IN str)
返回子串 substr 在字符串 str 第一個(gè)出現(xiàn)的位置,如果 substr 不是在 str 里面,返回 0.
mysql select LOCATE(bar , foobarbar
– 4
mysql select LOCATE(xbar , foobar
– 0
該函數(shù)是多字節(jié)可靠的。
LOCATE(substr,str,pos)
返回子串 substr 在字符串 str 第一個(gè)出現(xiàn)的位置,從位置 pos 開(kāi)始。如果 substr 不是在 str 里面,返回 0。
mysql select LOCATE(bar , foobarbar ,5);
– 7
這函數(shù)是多字節(jié)可靠的。
INSTR(str,substr)
返回子串 substr 在字符串 str 中的第一個(gè)出現(xiàn)的位置。這與有 2 個(gè)參數(shù)形式的 LOCATE()相同,除了參數(shù)被顛倒。
mysql select INSTR(foobarbar , bar
– 4
mysql select INSTR(xbar , foobar
– 0
這函數(shù)是多字節(jié)可靠的。
LPAD(str,len,padstr)
返回字符串 str,左面用字符串 padstr 填補(bǔ)直到 str 是 len 個(gè)字符長(zhǎng)。
mysql select LPAD(hi ,4, ??
– ??hi
RPAD(str,len,padstr)
返回字符串 str,右面用字符串 padstr 填補(bǔ)直到 str 是 len 個(gè)字符長(zhǎng)。
mysql select RPAD(hi ,5, ?
– hi???
LEFT(str,len)
返回字符串 str 的最左面 len 個(gè)字符。
mysql select LEFT(foobarbar , 5);
– fooba
該函數(shù)是多字節(jié)可靠的。
RIGHT(str,len)
返回字符串 str 的最右面 len 個(gè)字符。
mysql select RIGHT(foobarbar , 4);
– rbar
該函數(shù)是多字節(jié)可靠的。
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)
MID(str,pos,len)
從字符串 str 返回一個(gè) len 個(gè)字符的子串,從位置 pos 開(kāi)始。使用 FROM 的變種形式是 ANSI SQL92 語(yǔ)法。
mysql select SUBSTRING(Quadratically ,5,6);
– ratica
該函數(shù)是多字節(jié)可靠的。
SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
從字符串 str 的起始位置 pos 返回一個(gè)子串。
mysql select SUBSTRING(Quadratically ,5);
– ratically
mysql select SUBSTRING(foobarbar FROM 4);
– barbar
該函數(shù)是多字節(jié)可靠的。
SUBSTRING_INDEX(str,delim,count)
返回從字符串 str 的第 count 個(gè)出現(xiàn)的分隔符 delim 之后的子串。如果 count 是正數(shù),返回最后的分隔符到左邊(從左邊數(shù)) 的所有字符。如果 count 是負(fù)數(shù),返回最后的分隔符到右邊的所有字符(從右邊數(shù))。
mysql select SUBSTRING_INDEX(www.mysql.com , . , 2);
– www.mysql
mysql select SUBSTRING_INDEX(www.mysql.com , . , -2);
– mysql.com
該函數(shù)對(duì)多字節(jié)是可靠的。
LTRIM(str)
返回刪除了其前置空格字符的字符串 str。
mysql select LTRIM(barbar
– barbar
RTRIM(str)
返回刪除了其拖后空格字符的字符串 str。
mysql select RTRIM(barbar
– barbar
該函數(shù)對(duì)多字節(jié)是可靠的。
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
返回字符串 str,其所有 remstr 前綴或后綴被刪除了。如果沒(méi)有修飾符 BOTH、LEADING 或 TRAILING 給出,BOTH 被假定。如果 remstr 沒(méi)被指定,空格被刪除。
mysql select TRIM(bar
– bar
mysql select TRIM(LEADING x FROM xxxbarxxx
– barxxx
mysql select TRIM(BOTH x FROM xxxbarxxx
– bar
mysql select TRIM(TRAILING xyz FROM barxxyz
– barx
該函數(shù)對(duì)多字節(jié)是可靠的。
SOUNDEX(str)
返回 str 的一個(gè)同音字符串。聽(tīng)起來(lái)“大致相同”的 2 個(gè)字符串應(yīng)該有相同的同音字符串。一個(gè)“標(biāo)準(zhǔn)”的同音字符串長(zhǎng)是 4 個(gè)字符,但是 SOUNDEX()函數(shù)返回一個(gè)任意長(zhǎng)的字符串。你可以在結(jié)果上使用 SUBSTRING()得到一個(gè)“標(biāo)準(zhǔn)”的 同音串。所有非數(shù)字字母字符在給定的字符串中被忽略。所有在 A - Z 之外的字符國(guó)際字母被當(dāng)作元音。
mysql select SOUNDEX(Hello
– H400
mysql select SOUNDEX(Quadratically
– Q36324
SPACE(N)
返回由 N 個(gè)空格字符組成的一個(gè)字符串。
mysql select SPACE(6);
–
REPLACE(str,from_str,to_str)
返回字符串 str,其字符串 from_str 的所有出現(xiàn)由字符串 to_str 代替。
mysql select REPLACE(www.mysql.com , w , Ww
– WwWwWw.mysql.com
該函數(shù)對(duì)多字節(jié)是可靠的。
REPEAT(str,count)
返回由重復(fù) countTimes 次的字符串 str 組成的一個(gè)字符串。如果 count = 0,返回一個(gè)空字符串。如果 str 或 count 是 NULL,返回 NULL。
mysql select REPEAT(MySQL , 3);
– MySQLMySQLMySQL
REVERSE(str)
返回顛倒字符順序的字符串 str。
mysql select REVERSE(abc
– cba
該函數(shù)對(duì)多字節(jié)可靠的。
INSERT(str,pos,len,newstr)
返回字符串 str,在位置 pos 起始的子串且 len 個(gè)字符長(zhǎng)得子串由字符串 newstr 代替。
mysql select INSERT(Quadratic , 3, 4, What
– QuWhattic
該函數(shù)對(duì)多字節(jié)是可靠的。
ELT(N,str1,str2,str3,…)
如果 N = 1,返回 str1,如果 N = 2,返回 str2,等等。如果 N 小于 1 或大于參數(shù)個(gè)數(shù),返回 NULL。ELT()是 FIELD()反運(yùn)算。
mysql select ELT(1, ej , Heja , hej , foo
– ej
mysql select ELT(4, ej , Heja , hej , foo
– foo
FIELD(str,str1,str2,str3,…)
返回 str 在 str1, str2, str3, … 清單的索引。如果 str 沒(méi)找到,返回 0。FIELD()是 ELT()反運(yùn)算。
mysql select FIELD(ej , Hej , ej , Heja , hej , foo
– 2
mysql select FIELD(fo , Hej , ej , Heja , hej , foo
– 0
FIND_IN_SET(str,strlist)
如果字符串 str 在由 N 子串組成的表 strlist 之中,返回一個(gè) 1 到 N 的值。一個(gè)字符串表是被“,”分隔的子串組成的一個(gè)字符串。如果第一個(gè)參數(shù)是一個(gè)常數(shù)字符串并且第二個(gè)參數(shù)是一種類(lèi)型為 SET 的列,F(xiàn)IND_IN_SET()函數(shù)被優(yōu)化而使用位運(yùn)算!如果 str 不是在 strlist 里面或如果 strlist 是空字符串,返回 0。如果任何一個(gè)參數(shù)是 NULL,返回 NULL。如果第一個(gè)參數(shù)包含一個(gè)“,”,該函數(shù)將工作不正常。
mysql SELECT FIND_IN_SET(b , a,b,c,d
– 2
MAKE_SET(bits,str1,str2,…)
返回一個(gè)集合 (包含由“,”字符分隔的子串組成的一個(gè)字符串),由相應(yīng)的位在 bits 集合中的的字符串組成。str1 對(duì)應(yīng)于位 0,str2 對(duì)應(yīng)位 1,等等。在 str1, str2, … 中的 NULL 串不添加到結(jié)果中。
mysql SELECT MAKE_SET(1, a , b , c
– a
mysql SELECT MAKE_SET(1 | 4, hello , nice , world
– hello,world
mysql SELECT MAKE_SET(0, a , b , c
–
EXPORT_SET(bits,on,off,[separator,[number_of_bits]])
返回一個(gè)字符串,在這里對(duì)于在“bits”中設(shè)定每一位,你得到一個(gè)“on”字符串,并且對(duì)于每個(gè)復(fù)位 (reset) 的位,你得到一個(gè)“off”字符串。每個(gè)字符串用“separator”分隔 (缺省“,”),并且只有“bits”的“number_of_bits”(缺省 64) 位被使用。
mysql select EXPORT_SET(5, Y , N , , ,4)
– Y,N,Y,N
LCASE(str)
LOWER(str)
返回字符串 str,根據(jù)當(dāng)前字符集映射 (缺省是 ISO-8859-1 Latin1) 把所有的字符改變成小寫(xiě)。該函數(shù)對(duì)多字節(jié)是可靠的。
mysql select LCASE(QUADRATICALLY
– quadratically
UCASE(str)
UPPER(str)
返回字符串 str,根據(jù)當(dāng)前字符集映射 (缺省是 ISO-8859-1 Latin1) 把所有的字符改變成大寫(xiě)。該函數(shù)對(duì)多字節(jié)是可靠的。
mysql select UCASE(Hej
– HEJ
該函數(shù)對(duì)多字節(jié)是可靠的。
LOAD_FILE(file_name)
讀入文件并且作為一個(gè)字符串返回文件內(nèi)容。文件必須在服務(wù)器上,你必須指定到文件的完整路徑名,而且你必須有 file 權(quán)限。文件必須所有內(nèi)容都是可讀的并且小于 max_allowed_packet。如果文件不存在或由于上面原因之一不能被讀出,函數(shù)返回 NULL。
mysql UPDATE table_name
SET blob_column=LOAD_FILE(/tmp/picture)
WHERE id=1;
MySQL 必要時(shí)自動(dòng)變換數(shù)字為字符串,并且反過(guò)來(lái)也如此:
mysql SELECT 1+ 1
– 2
mysql SELECT CONCAT(2, test
– 2 test
如果你想要明確地變換一個(gè)數(shù)字到一個(gè)字符串,把它作為參數(shù)傳遞到 CONCAT()。
如果字符串函數(shù)提供一個(gè)二進(jìn)制字符串作為參數(shù),結(jié)果字符串也是一個(gè)二進(jìn)制字符串。被變換到一個(gè)字符串的數(shù)字被當(dāng)作是一個(gè)二進(jìn)制字符串。這僅影響比較。
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL()返回 expr1,否則它返回 expr2。IFNULL()返回一個(gè)數(shù)字或字符串值,取決于它被使用的上下文環(huán)境。
mysql select IFNULL(1,0);
– 1
mysql select IFNULL(0,10);
– 0
mysql select IFNULL(1/0,10);
– 10
mysql select IFNULL(1/0, yes
– yes
IF(expr1,expr2,expr3)
如果 expr1 是 TRUE(expr1 ;0 且 expr1 ;NULL),那么 IF()返回 expr2,否則它返回 expr3。IF()返回一個(gè)數(shù)字或字符串值,取決于它被使用的上下文。
mysql select IF(1 2,2,3);
– 3
mysql select IF(1 2, yes , no
– yes
mysql select IF(strcmp( test , test1), yes , no
– no
expr1 作為整數(shù)值被計(jì)算,它意味著如果你正在測(cè)試浮點(diǎn)或字符串值,你應(yīng)該使用一個(gè)比較操作來(lái)做。
mysql select IF(0.1,1,0);
– 0
mysql select IF(0.1 ;0,1,0);
– 1
在上面的第一種情況中,IF(0.1)返回 0,因?yàn)?0.1 被變換到整數(shù)值, 導(dǎo)致測(cè)試 IF(0)。這可能不是你期望的。在第二種情況中,比較測(cè)試原來(lái)的浮點(diǎn)值看它是否是非零,比較的結(jié)果被用作一個(gè)整數(shù)。
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result …] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END
第一個(gè)版本返回 result,其中 value=compare-value。第二個(gè)版本中如果第一個(gè)條件為真,返回 result。如果沒(méi)有匹配的 result 值,那么結(jié)果在 ELSE 后的 result 被返回。如果沒(méi)有 ELSE 部分,那么 NULL 被返回。
mysql SELECT CASE 1 WHEN 1 THEN one WHEN 2 THEN two ELSE more END;
– one
mysql SELECT CASE WHEN 1 0 THEN true ELSE false END;
– true
mysql SELECT CASE BINARY B when a then 1 when b then 2 END;
– NULL
“MYSQL 的字符串函數(shù)具體用法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!