MySQL提供了許多字符串函數(shù),用于處理和操作字符串?dāng)?shù)據(jù)。以下是一些常用的MYSQL字符串函數(shù)。
建議收藏以備后續(xù)用到查閱參考。
目錄
一、CONCAT 拼接字符串
二、CONCAT_WS 拼接字符串
三、SUBSTR 取子字符串
四、SUBSTRING 取子字符串
五、SUBSTRING_INDEX?取子字符串
六、REPLACE 替換子字符串
七、UPPER 字母轉(zhuǎn)大寫
八、LENGTH 取以字節(jié)為單位的長(zhǎng)度
九、TRIM 刪除字符串頭部和尾部空格
十、RTRIM 刪除尾部空格
十一、LTRIM 刪除前導(dǎo)空格
十二、REVERSE?反轉(zhuǎn)后字符串
十三、ASCII?轉(zhuǎn)為ASCII 值
十四、BIN 轉(zhuǎn)為二進(jìn)制
十五、BIT_LENGTH 取位為單位的長(zhǎng)度
十六、CHAR 轉(zhuǎn)為字符
十七、CHAR_LENGTH 轉(zhuǎn)為字符后的長(zhǎng)度
十八、CHARACTER_LENGTH?轉(zhuǎn)為字符后的長(zhǎng)度
十九、ELT 指定參數(shù)返回
二十、EXPORT_SET 指定分隔符拼接字符串
二十一、FIELD 取值在列表中的索引
二十二、FIND_IN_SET 分隔串中找字符串
二十三、FORMAT 數(shù)字格式化為字符串
二十四、FROM_BASE64 解碼BASE64編碼的字符串
二十五、HEX 取參數(shù)的十六進(jìn)制值的字符串表示
二十六、INSERT?字符串中插入一個(gè)新的字符串
二十七、INSTR 查找子串在目標(biāo)串出現(xiàn)的第一個(gè)位置
二十八、LCASE 轉(zhuǎn)為小寫
二十九、LOWER 轉(zhuǎn)為小寫
三十、LEFT 取左子串字符串
三十一、RIGHT?取右子串字符串
三十二、LOCATE 查找第一個(gè)子串的位置
三十三、LPAD?左側(cè)填充指定的字符串使其達(dá)到指定的長(zhǎng)度
三十四、RPAD?右側(cè)填充指定的字符串使其達(dá)到指定的長(zhǎng)度
三十五、MAKE_SET 按參數(shù)1的二進(jìn)制位反轉(zhuǎn)返回對(duì)應(yīng)位置參數(shù)以逗號(hào)分隔集合
三十六、MID 取指定位置指定長(zhǎng)度的子字符串
三十七、OCT 數(shù)字轉(zhuǎn)八進(jìn)制
三十八、OCTET_LENGTH 取以字節(jié)為單位的長(zhǎng)度
三十九、ORD 取第一個(gè)字符的ASCII碼
四十、POSITION?查找子串在目標(biāo)串出現(xiàn)的第一個(gè)位置
四十一、QUOTE?用單引號(hào)包圍字符串
四十二、REPEAT?字符串重復(fù)指定的次數(shù)
四十三、SOUNDEX 取發(fā)音的 soundex 字符串
四十四、SPACE 取指定數(shù)量空格字符串
四十五、STRCMP?比較兩個(gè)字符串
四十六、TO_BASE64 以base-64編碼字符串
四十七、UCASE?字符串轉(zhuǎn)為大寫
四十八、UNHEX?十六進(jìn)制數(shù)值的字符串轉(zhuǎn)換為字節(jié)
一、CONCAT 拼接字符串
MySQL CONCAT()
?函數(shù)用來(lái)按順序拼接指定的 2 個(gè)或多個(gè)字符串,并返回拼接后的字符串。如果您需要使用分隔符連接多個(gè)字符串,請(qǐng)使用 CONCAT_WS()
?函數(shù)。如果拼接的參數(shù)中一個(gè)為?NULL
, 則返回?NULL
。
語(yǔ)法:
CONCAT(string1, string2, ..., stringN)
參數(shù)說(shuō)明:
- string1, string2, ..., stringN 必需的,至少應(yīng)指定一個(gè)字符串;拼接中若有一個(gè)為?
NULL
, 則返回?NULL
;
返回值:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-751627.html
- 返回拼接后的字符串。
- 只有一個(gè)參數(shù),返回參數(shù)本身。
- 若有一個(gè)參數(shù)為NULL,返回NULL。
- 無(wú)參數(shù)時(shí)報(bào)錯(cuò):
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'
。
示例:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-751627.html
SELECT CONCAT('Hello', 'World'); // HelloWorld
SELECT CONCAT('Hello', NULL); // NULl
二、CONCAT_WS 拼接字符串
MySQL?CONCAT_WS()
?函數(shù)用來(lái)通過指定的分隔符按順序拼接指定的 2 個(gè)或多個(gè)字符串,并返回拼接后的字符串。
忽略String1,String2... 中的NULL值。
語(yǔ)法:
CONCAT_WS(separator, string1, string2, ..., stringN)
參數(shù)說(shuō)明:
-
separator
:分隔符,必須的。您可以使用單個(gè)字符,也可以使用字符串。 -
string1, string2, ..., stringN
:必需的,至少應(yīng)指定一個(gè)字符串;如果拼接的參數(shù)為?NULL
, 則會(huì)被忽略;當(dāng)不指定字符串時(shí),MySQL 將會(huì)報(bào)錯(cuò):?ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT_WS'
返回值:
- 分隔符連接后的多個(gè)字符串。
- 返回?
NULL情況:separator
?為?NULL。
示例:
SELECT
CONCAT_WS('-', 'Hello', 'World'), // Hello-World
CONCAT_WS('-', 'Hello', NULL, 'World'), // Hello-World
SELECT CONCAT_WS('-', 'Hello'); // Hello
三、SUBSTR 取子字符串
MYSQL SUBSTR()函數(shù)是?SUBSTRING() 函數(shù)的別名。
四、SUBSTRING 取子字符串
MySQL SUBSTRING() 函數(shù)從一個(gè)字符串中返回一個(gè)從指定位置開始的指定長(zhǎng)度的子字符串。 SUBSTR() 等同于 SUBSTRING() 函數(shù)。
語(yǔ)法:
有4種形式:
SUBSTRING(str, pos)
SUBSTRING(str FROM pos)
SUBSTRING(str, pos, len)
SUBSTRING(str FROM pos FOR len)
參數(shù)說(shuō)明:
- str:必需的,從中提取子字符串的原字符串。
- pos:必需的,開始提取的位置。它可以是正數(shù)或者負(fù)數(shù)。如果是正數(shù),則從字符串的開頭為起始位置確定開始提取的位置提取子字符串。如果是負(fù)數(shù),則從字符串的結(jié)尾為起始位置確定開始提取的位置提取子字符串。
- len:可選的。子字符串的長(zhǎng)度(字符數(shù))。如果不指定,則提取到原字符串的結(jié)尾。
返回值:
- 當(dāng)?
pos
?為?0
?或者超過原字符串的長(zhǎng)度時(shí),?返回空串?''
。 - 當(dāng)?
pos
?為負(fù)數(shù)時(shí),從字符串尾部向前計(jì)數(shù)。 - 當(dāng)?
pos + len
?超過原字符串的長(zhǎng)度時(shí),從pos位置提取到原字符串的結(jié)尾。 - 當(dāng)參數(shù)為?
NULL
?時(shí),?返回?NULL
。
示例:
SELECT
SUBSTRING('Hello', 1, 2), // He
SUBSTRING('Hello', 1), // Hello
SUBSTRING('Hello', -2, 2), // lo
SUBSTRING('Hello' FROM 2 FOR 2) // el
五、SUBSTRING_INDEX?取子字符串
MySQL?SUBSTRING_INDEX()
?函數(shù)返回一個(gè)字符串中指定分隔符出現(xiàn)在指定次數(shù)之前的子字符串。
語(yǔ)法:
SUBSTRING_INDEX(str, delim, count)
參數(shù)說(shuō)明:
-
str
:必需的。原字符串。 -
delim
:必需的。在原字符串中搜索的分隔符。 -
count
:必需的。分隔符出現(xiàn)的次數(shù)。如果?count
?為負(fù)數(shù),則從字符串尾部向前開始計(jì)數(shù)分隔符,返回分隔符之后的子字符串。
返回值:
- 從左往右數(shù):count為正數(shù),返回一個(gè)字符串中指定分隔符出現(xiàn)在指定次數(shù)之前的子字符串。
- 從右往左數(shù):count為負(fù)數(shù),返回一個(gè)字符串中指定分隔符出現(xiàn)在指定次數(shù)之前的子字符串。
- 返回空情況:count為0。
- 返回?
NULL情況:
任意一個(gè)參數(shù)為?NULL。
示例:
SELECT
SUBSTRING_INDEX('www.baidu.com', '.', 2), // www.baidu
SUBSTRING_INDEX('www.baidu.com', '.', -2), // baidu.com
SUBSTRING_INDEX('www.baidu.com', '.', 0) //
六、REPLACE 替換子字符串
MySQL REPLACE() 函數(shù)將字符串中出現(xiàn)的所有子字符串替換為新的子字符串。 REPLACE() 函數(shù)是基于字符的替換,并且替換字符串時(shí)是區(qū)分大小寫的。
語(yǔ)法:
REPLACE(str, from_str, to_str)
參數(shù)說(shuō)明:
- str:必需的,原字符串。
- from_str:必需的,被替換的子字符串。
- to_str:必需的,用來(lái)替換的新子字符串。
返回值:
- 返回?
str
?中的所有?from_str
?被?to_str
?替換后的字符串。 - 當(dāng)任意一個(gè)參數(shù)為?
NULL
?時(shí),?REPLACE()
?函數(shù)將返回?NULL
。
示例:
SELECT
REPLACE('Hello World', 'World', 'Alice'), // Hello Alice
REPLACE('Hello World', 'l', 'L'), // HeLLo WorLd
REPLACE('hello World', 'h', 'HH') // HHello World
七、UPPER 字母轉(zhuǎn)大寫
MySQL UPPER() 函數(shù)將指定字符串轉(zhuǎn)為大寫并返回。 UCASE() 函數(shù)是 UPPER() 函數(shù)的別名。
如果想將字符串轉(zhuǎn)換為小寫,請(qǐng)使用 LCASE() 或者 LOWER() 函數(shù)。
語(yǔ)法:
UPPER(str)
參數(shù)說(shuō)明:
- str:必需的。 被處理的字符串。
返回值:
- 定字符串的大寫形式。
- 當(dāng)參數(shù)?
str
?為?NULL
?時(shí),?UPPER()
?函數(shù)將返回?NULL
。
示例:
SELECT UPPER(name)
FROM film
LIMIT 3;
+-------+
|FILM0 |
+-------+
|FILM1 |
+-------+
|FILM2 |
+-------+
八、LENGTH 取以字節(jié)為單位的長(zhǎng)度
MySQL LENGTH() 函數(shù)返回指定字符串的以字節(jié)為單位的長(zhǎng)度。如果想返回字符的數(shù)量,請(qǐng)使用 CHAR_LENGTH() 函數(shù)或者 CHARACTER_LENGTH() 函數(shù)。
LENGTH() 函數(shù)與 OCTET_LENGTH() 函數(shù)相同。
語(yǔ)法:
LENGTH(string)
參數(shù)說(shuō)明:
- string:必需的。需要計(jì)算長(zhǎng)度的字符串。參數(shù)可以是其他的類型,比如數(shù)字或者日期等,LENGTH() 函數(shù)會(huì)首先將其轉(zhuǎn)為字符串再計(jì)算長(zhǎng)度。
返回值:
- 返回指定字符串的以字節(jié)為單位的長(zhǎng)度,即字節(jié)的數(shù)量。
- 當(dāng)參數(shù)為?
NULL
?時(shí),?返回?NULL
。
示例:
SELECT
LENGTH('Hello'), // 5
LENGTH(''), // 0
LENGTH(20), // 2
LENGTH(-20), // 3
LENGTH(+20), // 2
LENGTH(NOW()), // 19
LENGTH(CURDATE()), // 10
LENGTH('你好'), // 6
LENGTH(NULL) // NULL
九、TRIM 刪除字符串頭部和尾部空格
MySQL TRIM() 函數(shù)從指定字符串的開頭和結(jié)尾刪除由指定字符組成的最長(zhǎng)字符串。如果只想刪除字符串的前導(dǎo)空格,請(qǐng)使用 LTRIM() 函數(shù);如果只想刪除字符串的尾隨空格,請(qǐng)使用 RTRIM() 函數(shù)。
語(yǔ)法:
TRIM(str)
TRIM(remove_str FROM str)
TRIM({BOTH | LEADING | TRAILING} remove_str FROM str)
參數(shù)說(shuō)明:
- str:必需的。需要處理的字符串。
- remove_str:可選的。需要?jiǎng)h除的前綴和后綴字符串。如果不指定這個(gè)?
remove_str
,則默認(rèn)值為空格。 -
BOTH:
代表同時(shí)刪除前導(dǎo)和尾隨的字符。 -
LEADING:
代表只刪除前導(dǎo)字符。 -
TRAILING:
代表只刪除尾隨的字符。 - 如果不指定?
{BOTH | LEADING | TRAILING}
,則默認(rèn)值為?BOTH
。
返回值:
- 從指定字符串的開頭、結(jié)尾或者兩端刪除由指定字符組成的最長(zhǎng)字符串。
-
當(dāng)參數(shù)為?
NULL
?時(shí),?TRIM()
?函數(shù)將返回?NULL
。
示例:
SELECT
TRIM(' Hello '), // Hello
TRIM(BOTH FROM ' Hello '), // Hello
TRIM(LEADING FROM ' Hello '), // Hello 尾部還有空格
TRIM(TRAILING FROM ' Hello '), // Hello頭部還有空格
TRIM('_' FROM '___Hello___'), // Hello
TRIM(BOTH '_' FROM '___Hello___'), // Hello
TRIM(LEADING '_' FROM '___Hello___'), // Hello___
TRIM(TRAILING '_' FROM '___Hello___'), // ___Hello
TRIM('_#' FROM '_#_#_Hello_#_#'), // _Hello
TRIM(BOTH '_#' FROM '_#_#_Hello_#_#'), // _Hello
TRIM(LEADING '_#' FROM '_#_#_Hello_#_#'),// _Hello_#_#
TRIM(TRAILING '_#' FROM '_#_#_Hello_#_#')// _#_#_Hello
十、RTRIM 刪除尾部空格
MySQL RTRIM() 函數(shù)刪除指定字符串的尾部空格,并返回沒有尾部空格的字符串。如果刪除字符串的尾隨空格,請(qǐng)使用 RTRIM() 函數(shù);如果想同時(shí)刪除字符串的前導(dǎo)和尾隨空格,請(qǐng)使用 TRIM() 函數(shù)。
語(yǔ)法:
RTRIM(str)
參數(shù)說(shuō)明:
-
str
:必需的。需要?jiǎng)h除尾部空格的字符串。
返回值:
- 刪除了尾部空格的字符串。
- 返回?
NULL情況:
參數(shù)為?NULL
?。
示例:
SELECT
RTRIM(' Hello '), // Hello已刪除尾部空格
RTRIM(NULL); // NULL
十一、LTRIM 刪除前導(dǎo)空格
MySQL LTRIM() 函數(shù)刪除指定字符串的前導(dǎo)空格,并返回沒有前導(dǎo)空格的字符串。如果刪除字符串的尾隨空格,請(qǐng)使用 RTRIM() 函數(shù);如果想同時(shí)刪除字符串的前導(dǎo)和尾隨空格,請(qǐng)使用 TRIM() 函數(shù)。
語(yǔ)法:
LTRIM(str)
參數(shù)說(shuō)明:
- str:必需的。需要?jiǎng)h除前導(dǎo)空格的字符串。
返回值:
- 刪除了前導(dǎo)空格的字符串。
- 返回NULL情況:參數(shù)為?
NULL。
示例:
SELECT
LTRIM(' Hello '), // Hello 尾部空格未刪除
LTRIM(NULL) // NULL
十二、REVERSE?反轉(zhuǎn)后字符串
MySQL?REVERSE()
?函數(shù)返回反轉(zhuǎn)后的字符串。?REVERSE()
?函數(shù)基于字符操作而不是基于字節(jié)。
語(yǔ)法:
REVERSE(str)
參數(shù)說(shuō)明:
- str:必需的。需要反轉(zhuǎn)的字符串。
返回值:
- 返回反轉(zhuǎn)后的字符串。
- 當(dāng)參數(shù)為?
NULL
?時(shí),?REVERSE()
?函數(shù)將返回?NULL
。
示例:
SELECT
REVERSE('ABC'), // CBA
REVERSE('abc'), // cba
REVERSE('123'), // 231
REVERSE(NULL) // NULL
十三、ASCII?轉(zhuǎn)為ASCII 值
MySQL?ASCII()
?函數(shù)將指定的字符轉(zhuǎn)為對(duì)應(yīng)的 ASCII 值。ASCII()
?只返回由指定的字符串的第一個(gè)字符的 ASCII 值。
語(yǔ)法:
ASCII(character)
參數(shù)說(shuō)明:
-
character:
必需的。 要返回 ASCII 值的字符。 如果多余一個(gè)字符,它將只返回第一個(gè)字符的 ASCII 值。
返回值:
- 給定的字符串的第一個(gè)字符的 ASCII 值。
- 返回?
NULL情況:
character?為?NULL
。
示例:
SELECT ASCII('A'); // 65
十四、BIN 轉(zhuǎn)為二進(jìn)制
MySQL?BIN()
?函數(shù)返回給定數(shù)字的二進(jìn)制值的字符串表示。
語(yǔ)法:
BIN(number)
參數(shù)說(shuō)明:
-
number
:必需的。需要以二進(jìn)制表示的數(shù)字。
返回值:
- 表示給定數(shù)字的二進(jìn)制值。
- 返回?
NULL情況:number
?為?NULL。
示例:
SELECT
BIN(2), // 10
BIN(3.6), // 11
BIN('3A'), // 11
BIN(NULL) // NULL
十五、BIT_LENGTH 取位為單位的長(zhǎng)度
MySQL BIT_LENGTH() 函數(shù)以位為單位返回給定字符串的長(zhǎng)度。
如果想以字節(jié)為單位返回字符串的長(zhǎng)度,請(qǐng)使用 LENGTH() 函數(shù)。
如果想返回字符串中的字符數(shù)量,請(qǐng)使用 CHAR_LENGTH() 或者 CHARACTER_LENGTH() 函數(shù)。
語(yǔ)法:
BIT_LENGTH(string)
參數(shù)說(shuō)明:
-
string
:必需的。 需要計(jì)算位長(zhǎng)度的字符串。
返回值:
- 給定字符串的位長(zhǎng)度。
- 返回?
NULL情況:string
?為?NULL。
若參數(shù)不為字符串,會(huì)嘗試轉(zhuǎn)為字符串
示例:
SELECT
BIT_LENGTH('a'), // 8
BIT_LENGTH('string'), // 48
BIT_LENGTH(1), // 8
BIT_LENGTH(01), // 8
BIT_LENGTH('01'), // 16
BIT_LENGTH('你好'), // 48
BIT_LENGTH(NULL) // NULL
十六、CHAR 轉(zhuǎn)為字符
MySQL?CHAR()
?函數(shù)將每個(gè)參數(shù)對(duì)應(yīng)的整數(shù)轉(zhuǎn)為對(duì)應(yīng)的字符,并將這些字符組成一個(gè)字符串返回。
忽略值為NULL的參數(shù)。
語(yǔ)法:
CHAR(num1, [num2, ...])
參數(shù)說(shuō)明:
-
num1, [num2, ...]
:必需的。一些整數(shù),或者能轉(zhuǎn)為整數(shù)的值。
返回值:
- 一個(gè)字符串,其中的字符由每個(gè)整數(shù)參數(shù)對(duì)應(yīng)的字符組成。
- 參數(shù)NULL直接被忽略,只有一個(gè)參數(shù)且為NULL時(shí)返回空。
示例:
SELECT
CHAR(65, 66, 67), // ABC
CHAR(65, '66', '67'), // ABC
CHAR(65.4, '66.5', '67.6'), // ABC
CHAR(65, 66, NULL, 67), // ABC
CHAR(NULL) //
十七、CHAR_LENGTH 轉(zhuǎn)為字符后的長(zhǎng)度
在 MySQL 中, CHAR_LENGTH() 返回給定字符串的長(zhǎng)度。 CHAR_LENGTH() 返回的是字符串中字符的數(shù)量,與字符編碼無(wú)關(guān)。此函數(shù)是 CHARACTER_LENGTH() 函數(shù)的別名。
語(yǔ)法:
CHARACTER_LENGTH(string)
參數(shù)說(shuō)明:
-
string
:必需的。 需要計(jì)算長(zhǎng)度的字符串。
返回值:
- 給定字符串的長(zhǎng)度(字符的個(gè)數(shù))。
- 返回?
NULL情況:string
?為?NULL
示例:
SELECT CHAR_LENGTH('cxian'); // 5
十八、CHARACTER_LENGTH?轉(zhuǎn)為字符后的長(zhǎng)度
在 MySQL 中, CHARACTER_LENGTH() 返回給定字符串的長(zhǎng)度。 CHARACTER_LENGTH() 返回的是字符串中字符的數(shù)量,與字符編碼無(wú)關(guān)。此函數(shù)是 CHAR_LENGTH() 函數(shù)的別名。
用法同CHAR_LENGTH(number)函數(shù)。
十九、ELT 指定參數(shù)返回
MySQL?ELT()
?函數(shù)從第二個(gè)參數(shù)開始查找由第一個(gè)參數(shù)指定位置的參數(shù)并作為字符串返回。
語(yǔ)法:
ELT(pos, str1, str2, ...)
參數(shù)說(shuō)明:
-
pos
:必需的。一個(gè)用于指定位置的數(shù)字。 -
str1, str2, ...
:必需的。字符串參數(shù)列表。
返回值:
- 由?
pos
?指定位置的參數(shù)。 - pos大于0:返回第pos+1的參數(shù)。
- 返回?
NULL情況:pos
?小于 1 或者超過參數(shù)的數(shù)量。
示例:
SELECT
ELT(1, 'Aa', 'Bb', 'Cc'), // Aa
ELT(3, 'Aa', 'Bb', 'Cc'), // Cc
ELT(-1, 'Aa', 'Bb', 'Cc'), // NULL
ELT(0, 'Aa', 'Bb', 'Cc'), // NULL
ELT(4, 'Aa', 'Bb', 'Cc') // NULL
二十、EXPORT_SET 指定分隔符拼接字符串
語(yǔ)法:
EXPORT_SET(bits, on, off, separator, length)
參數(shù)說(shuō)明:
-
bits
:必需的。一個(gè)數(shù)字。將?bits
?轉(zhuǎn)為二進(jìn)制并反轉(zhuǎn)后的各個(gè)位的值決定?on
?還是?off
?出現(xiàn)在該位置。 -
on
:必需的。當(dāng)位值為?1
?時(shí)使用的字符串。 -
off
:必需的。當(dāng)位值為?0
?時(shí)使用的字符串。 -
separator
:可選的。分隔符或者分隔字符串,默認(rèn)值為?,
。 -
length
:可選的。集合的元素的個(gè)數(shù),默認(rèn)值為?64
。
返回值:
- 根據(jù)?
bits
?對(duì)應(yīng)的二進(jìn)制并反轉(zhuǎn)后的值挑選對(duì)應(yīng)的字符串,并返回一個(gè)逗號(hào)分隔的字符串集合。
示例:
SELECT
EXPORT_SET(5, 'Aa', 'Bb', '#', 4), // Aa#Bb#Aa#Bb
// bits = 5, 5 的二進(jìn)制位 101, 總長(zhǎng)度為 4,左邊補(bǔ) 0 變?yōu)?0101。然后反轉(zhuǎn)變?yōu)?1010。
// 按 1010 中的每位的值使用 on 或者 off:
// 第一位為 1,則使用 Aa。
// 第二位為 0,則使用 Bb。
// 第三位為 1,則使用 Aa。
// 第四位為 0,則使用 Bb。
// 最后將所有的字符串使用分隔符 # 組合起來(lái),即:Aa#Bb#Aa#Bb。
EXPORT_SET(5, 'Y', 'N', ',', 4), // Y,N,Y,N
EXPORT_SET(5, '1', '0', ',', 10), // 1,0,1,0,0,0,0,0,0,0
EXPORT_SET(0, 'Y', 'N', ',', 4) // N,N,N,N
二十一、FIELD 取值在列表中的索引
MySQL?FIELD()
?函數(shù)返回一個(gè)指定的值在給定的列表中的索引。
語(yǔ)法:
FIELD(value, v1, v2, ..., vN)
參數(shù)說(shuō)明:
-
value
:必須的。要在列表中查找的值。 -
v1, v2, ..., vN
:必須的。被搜索的列表中的各個(gè)元素。
返回值:
- 指定的值對(duì)應(yīng)的位置索引(索引從1開始)。
- 返回0情況:
- 找不到指定的值。
- 查找的值為?
NULL。
示例:
SELECT
FIELD('A', 'A', 'B', 'C'), // 1
FIELD('1', 'A', 'B', 'C'), // 0
FIELD(NULL, NULL, 'B', 'C') // 0
二十二、FIND_IN_SET 分隔串中找字符串
MySQL FIND_IN_SET() 函數(shù)返回字符串在一個(gè)逗號(hào)分隔的字符串列表中的索引。 FIND_IN_SET() 函數(shù)與 FIELD() 函數(shù)類似,不同的是 FIELD() 中的列表是由多個(gè)參數(shù)組成的,并且參數(shù)的類型也不一定是字符串。
語(yǔ)法:
FIND_IN_SET(string, string_list)
參數(shù)說(shuō)明:
-
string
:必須的。這是要搜索的字符串。 -
string_list
:必須的。這是一個(gè)使用逗號(hào)分隔的字符串列表。
返回值:
- 找到則返回對(duì)應(yīng)的位置索引。
- 返回?
0情況:
找不到。
找到空串。
- 返回?
NULL情況:
???????任何一個(gè)參數(shù)為NULL。
示例:
SELECT
FIND_IN_SET('A', 'A,B,C'), // 1
FIND_IN_SET('1', 'A,B,C'), // 0
FIND_IN_SET(NULL, 'A,B,C'), // NULL
FIND_IN_SET('D', NULL) // NULL
二十三、FORMAT 數(shù)字格式化為字符串
MySQL?FORMAT()
?函數(shù)將數(shù)字四舍五入到指定的小數(shù)位數(shù),并按照??#,###,###.##
之類的格式進(jìn)行格式化,然后將結(jié)果作為字符串返回。
語(yǔ)法:
FORMAT(number, decimal_places)
參數(shù)說(shuō)明:???????
-
number
:必需的。 需要格式化的數(shù)字。 -
decimal_places
:必需的。 要保留的小數(shù)位數(shù)。
返回值:
-
???????指定小數(shù)位數(shù)的類似于?
#,###,###.##
?格式的字符串。有一定規(guī)則:- 若以數(shù)字開頭,則將開頭的數(shù)字部分轉(zhuǎn)為數(shù)字。
- 若不能轉(zhuǎn)為數(shù)字,則按照?
0
?處理。
- 返回?
NULL情況:number為null。
-
無(wú)小數(shù)點(diǎn)情況:
decimal_places為0。
示例:
SELECT
FORMAT(111111, 2), // 111,111.00
FORMAT(111111.111, 2),// 111,111.11
FORMAT(111111.111, 0),// 111,111
FORMAT('111111', 2), // 111,111.00
FORMAT('11111A', 2), // 11,111.00
FORMAT('A11111', 2), // 0.00
FORMAT(NULL, 2) // NULL
二十四、FROM_BASE64 解碼BASE64編碼的字符串
MySQL FROM_BASE64() 函數(shù)解碼 base-64 編碼的數(shù)據(jù)并將結(jié)果作為二進(jìn)制字符串返回。
FROM_BASE64() 函數(shù)可以解碼 TO_BASE64() 函數(shù)的結(jié)果。
不同于現(xiàn)有的 base-64 方案, MySQL TO_BASE64() 和 FROM_BASE64() 函數(shù)有些特殊的規(guī)則:
- 字母值 62 的編碼是 '+'.
- 字母值 63 的編碼是 '/'.
- 編碼輸出由 4 個(gè)可打印字符組成。輸入數(shù)據(jù)的每 3 個(gè)字節(jié)使用 4 個(gè)字符進(jìn)行編碼。如果最后一組長(zhǎng)度不夠 4,則用 '=' 字符填充。
- 在編碼輸出的每 76 個(gè)字符之后添加一個(gè)換行符,以將長(zhǎng)輸出分成多行。
- 解碼識(shí)別并忽略換行符、回車符、制表符和空格。
語(yǔ)法:
FROM_BASE64(str)
參數(shù)說(shuō)明:
-
str
:必需的。 用于?base-64
?解碼的字符串。
返回值:
- 將?
base-64
?編碼的數(shù)據(jù)解碼結(jié)果作為二進(jìn)制字符串返回。 - 返回?
NULL情況:str
?為?NULL。
- 由于?
FROM_BASE64()
?函數(shù)返回的是二進(jìn)制字符串,因此在 mysql 客戶端顯示的結(jié)果可能是十六進(jìn)制內(nèi)容。請(qǐng)?jiān)诘顷憰r(shí)使用?--binary-as-hex=false
?以禁用將二進(jìn)制內(nèi)容顯示為十六進(jìn)制。
示例一登陸時(shí)不使用--binary-as-hex
:
示例二登陸時(shí)使用--binary-as-hex=false
:
注:使用Navicat Premium連接數(shù)據(jù)庫(kù)顯示效果如示例二。
二十五、HEX 取參數(shù)的十六進(jìn)制值的字符串表示
MySQL?HEX()
?函數(shù)返回給定數(shù)字或字符串的十六進(jìn)制值的字符串表示。
語(yǔ)法:
HEX(number)
HEX(string)
???????參數(shù)說(shuō)明:
-
number/string
:必需的。需要以十六進(jìn)制表示的數(shù)字或字符串。
返回值:
- ???????參數(shù)的十六進(jìn)制值。
- 返回?
NULL情況:number/string
?為?NULL。
示例:
SELECT
HEX(255), // FF
HEX('b'), // 62
HEX('abc'), // 616263
HEX(NULL) // NULL
二十六、INSERT?字符串中插入一個(gè)新的字符串
MySQL?INSERT()
?函數(shù)在一個(gè)字符串中插入一個(gè)新的字符串,該新的字符串會(huì)替換源字符串中指定位置開始的指定長(zhǎng)度的子字符串。
語(yǔ)法:
INSERT(str, pos, len, newstr)
參數(shù)說(shuō)明:
- str:必需的。 需要處理的字符串。
- pos:必需的。 開始插入新字符串 newstr 的位置。pos 的值從 1 開始。
- len:必需的。 要被替換的字符的數(shù)量。
- newstr:必需的。 要插入的新字符串。
返回值:
-
???????被處理后的原字符串?
str
,其中?str
?中從?pos
?開始長(zhǎng)度為?len
?的子字符串被?newstr
?替換掉。 - 不替換情況:
- len為0。
- pos不在字符串長(zhǎng)度范圍內(nèi)。
- 若len > str.length - pos,則從位置?
pos
?替換str.length - pos的字符串 - 返回?
NULL情況:
-
??????????????
任何參數(shù)是?NULL。
-
示例:
SELECT
INSERT(NULL, 6, 1, ' '), // NULL
INSERT('Hello_World', 6, 1, ' '), // Hello World
INSERT('Hello_World', 6, 20, ' '), // Hello
二十七、INSTR 查找子串在目標(biāo)串出現(xiàn)的第一個(gè)位置
MySQL INSTR() 函數(shù)返回一個(gè)子字符串在一個(gè)字符串中第一次出現(xiàn)的位置的數(shù)字索引。 INSTR() 函數(shù)是不區(qū)分大小寫的。 INSTR() 函數(shù)與具有兩個(gè)參數(shù)的 LOCATE() 函數(shù)的和 POSITION() 功能相同。
語(yǔ)法:
INSTR(str, substr)
參數(shù)說(shuō)明:
- str:必需的。 被搜索的字符串。
- substr:必需的。 在 str 中搜索的子串。
返回值:
- 子字符串?
substr
?在字符串?str
?中的位置的數(shù)字索引。???????(數(shù)字索引從?1
?開始)??????? - 返回?
0情況:找不到。
- 返回?
NULL情況:
任意一個(gè)參數(shù)為?NULL。
示例:
SELECT
INSTR('Hello World', 'He'), // 1
INSTR('Hello World', 'he'), // 1
INSTR('Hello World', 'do'), // 0
INSTR('Hello World', NULL) // NULL
二十八、LCASE 轉(zhuǎn)為小寫
MySQL LCASE() 函數(shù)將指定字符串轉(zhuǎn)為小寫并返回。 LCASE() 函數(shù)是 LOWER() 函數(shù)的別名。
如果想將字符串轉(zhuǎn)換為大寫,請(qǐng)使用 UCASE() 或者 UPPER() 函數(shù)。
語(yǔ)法:
LCASE(str)
參數(shù)說(shuō)明:
- str:必需的。 被處理的字符串。
返回值:
- ???????指定字符串的小寫形式。
- 返回?
NULL情況:str為NULL。
示例:
SELECT
LCASE('Hello'), // hello
LCASE(NULL) // NULL
二十九、LOWER 轉(zhuǎn)為小寫
MySQL LOWER() 函數(shù)將指定字符串轉(zhuǎn)為小寫并返回。 LCASE() 函數(shù)是 LOWER() 函數(shù)的別名。
如果想將字符串轉(zhuǎn)換為大寫,請(qǐng)使用 UCASE() 或者 UPPER() 函數(shù)。
???????詳見:二十七、LCASE 轉(zhuǎn)為小寫
三十、LEFT 取左子串字符串
MySQL LEFT() 函數(shù)從指定字符串的左側(cè)返回指定數(shù)量的字符組成的字符串。如果想從字符串的右側(cè)提取字符,請(qǐng)使用 RIGHT() 函數(shù)。
語(yǔ)法:
LEFT(string, length)
參數(shù)說(shuō)明:
- string:必需的。需要從中提取字符的字符串。
- length:必需的。需要從字符串中提取字符的數(shù)量。
返回值:
- ???????指定數(shù)量的字符組成的左子字符串。
- 返回原字符串情況:length大于string的長(zhǎng)度。
- 返回空串情況:length為小于等于0。
- 返回?
NULL情況:
任意一個(gè)參數(shù)為?NULL。
示例:
SELECT
LEFT('Hello', 2), // He
LEFT('Hello', 6), // Hello
LEFT('Hello', 0), //
LEFT('Hello', -1), //
LEFT('Hello', NULL) // NULL
三十一、RIGHT?取右子串字符串
MySQL RIGHT() 函數(shù)從指定字符串的右側(cè)返回指定數(shù)量的字符組成的字符串。如果想從字符串的左側(cè)提取字符,請(qǐng)使用 LEFT() 函數(shù)。
操作參考三十、LEFT 取左子串字符串相似。不同是LEFT 是左邊,而RIGHT是右邊。(這里不再舉例)
三十二、LOCATE 查找第一個(gè)子串的位置
MySQL LOCATE() 函數(shù)返回一個(gè)字符串在另一個(gè)字符串中第一次出現(xiàn)的位置的數(shù)字索引。 LOCATE() 函數(shù)是不區(qū)分大小寫的。 LOCATE() 函數(shù)與具有兩個(gè)參數(shù)的 INSTR() 函數(shù)的和 POSITION() 功能相同。
語(yǔ)法:
LOCATE(substr, str)
LOCATE(substr, str, startPos)
參數(shù)說(shuō)明:
- substr:必需的。 在 str 中搜索的子串。
- str:必需的。 被搜索的字符串。
- startPos:可選的。 在 str 中開始搜索的位置,從 1 開始。
返回值:
- 子字符串?
substr
?在字符串?str
?中的位置的數(shù)字索引。(數(shù)字索引從?1
?開始)??????? - 返回?
0情況:
找不到。
-
startPos
?為?0。
- 返回?
NULL情況:
任意一個(gè)參數(shù)為?NULL
。
示例:
SELECT
LOCATE('He', 'Hello World'), // 1
LOCATE('ho', 'Hello World'), // 1
LOCATE('go', 'Hello World'), // 0
LOCATE(NULL, 'Hello World'), // NULL
???????三十三、LPAD?左側(cè)填充指定的字符串使其達(dá)到指定的長(zhǎng)度
MySQL LPAD() 函數(shù)在字符串的左側(cè)填充指定的字符串,使其達(dá)到指定的長(zhǎng)度。如果想在字符串的右側(cè)填充字符串,請(qǐng)使用 RPAD() 函數(shù)。
語(yǔ)法:
LPAD(str, len, padstr)
參數(shù)說(shuō)明:
- str:必需的。需要被填充的字符串。
- len:必需的。填充字符串需要達(dá)到的長(zhǎng)度。
- padstr:可選的。被用來(lái)填充到原字符串左側(cè)的字符串。
返回值:
- ???????填充后的字符串。
- 若
len
?小于原字符串?str
?的長(zhǎng)度,?str
?將被截?cái)嗟?len
?的長(zhǎng)度。 - 返回?
NULL情況:
-
??????????????len
?為負(fù)數(shù)。 - 任意一個(gè)參數(shù)為?
NULL。
-
示例:
SELECT
LPAD('oh', 5, 'o'), // ooooooh
LPAD('oh', 1, '1'), // o
LPAD('oh', -1, 'o'), // NULL
LPAD('World', 15, 'Hello') // HelloHelloWorld
三十四、RPAD?右側(cè)填充指定的字符串使其達(dá)到指定的長(zhǎng)度
MySQL RPAD() 函數(shù)在一個(gè)字符串的右側(cè)填充指定的字符串,使其達(dá)到指定的長(zhǎng)度。如果想在字符串的左側(cè)填充字符串,請(qǐng)使用 LPAD() 函數(shù)。
操作與LPAD相似。不同點(diǎn)是LPAD是多左側(cè),RPAD是右側(cè)。詳見:三十三、LPAD?左側(cè)填充指定的字符串使其達(dá)到指定的長(zhǎng)度。
三十五、MAKE_SET 按參數(shù)1的二進(jìn)制位反轉(zhuǎn)返回對(duì)應(yīng)位置參數(shù)以逗號(hào)分隔集合
MySQL?MAKE_SET()
?函數(shù)返回一個(gè)逗號(hào)分隔的字符串集合,該函數(shù)通過第一個(gè)參數(shù)對(duì)應(yīng)的二進(jìn)制決定是否其他字符串參數(shù)是否添加到結(jié)果集合中。
語(yǔ)法:
MAKE_SET(bits, str1, str2, ...)
參數(shù)說(shuō)明:
-
bits
:必需的。一個(gè)數(shù)字。將?bits
?轉(zhuǎn)為二進(jìn)制并反轉(zhuǎn)后的各個(gè)位決定?str1, str2, ...
?是否出現(xiàn)在結(jié)果中。 -
str1, str2, ...
:必需的。備選字符串。str1, str2, ...
?分別由?bits
?二進(jìn)制并反轉(zhuǎn)后的值中的第?1, 2, ...
?決定是否出現(xiàn)在結(jié)果中。
返回值:
-
???????根據(jù)?
bits
?對(duì)應(yīng)的二進(jìn)制并反轉(zhuǎn)后的值挑選對(duì)應(yīng)的字符串,并返回一個(gè)逗號(hào)分隔的字符串集合。 - NULL參數(shù)直接被忽略。
- 若bits為0,返回空。
示例:
SELECT
MAKE_SET(0, 'a', 'b', 'c', 'd'), //
MAKE_SET(1, 'a', 'b', 'c', 'd'), // a
MAKE_SET(2, 'a', 'b', 'c', 'd'), // a,b
MAKE_SET(3, 'a', 'b', 'c', 'd'), // b
MAKE_SET(4, 'a', 'b', 'c', 'd'). // c
- bits為0:返回空
- bits為1:二進(jìn)制為0001,反轉(zhuǎn)后為1000,對(duì)應(yīng)a,返回a。
- bits為2:二進(jìn)制為0010,反轉(zhuǎn)后為0100,對(duì)應(yīng)b,返回b。
- bits為3:二進(jìn)制為0011,反轉(zhuǎn)后為1100,對(duì)應(yīng)ab,返回a,b。
- bits為4:二進(jìn)制為0100,反轉(zhuǎn)后為0010,對(duì)應(yīng)c,返回c。
三十六、MID 取指定位置指定長(zhǎng)度的子字符串
MySQL?MID()
?函數(shù)返回一個(gè)字符串中從指定位置開始的指定長(zhǎng)度的子字符串。
MID(str, pos, len) 等同于 SUBSTRING(str, pos, len) 和 SUBSTR(str, pos, len) 函數(shù)。
語(yǔ)法:
MID(str, pos, len)
詳見:四、SUBSTRING 取子字符串
三十七、OCT 數(shù)字轉(zhuǎn)八進(jìn)制
MySQL?OCT()
?函數(shù)返回給定數(shù)字的八進(jìn)制值的字符串表示。
語(yǔ)法:
OCT(number)
參數(shù)說(shuō)明:
-
number
:必需的。需要以八進(jìn)制表示的數(shù)字。
返回值:
- ???????給定數(shù)字的八進(jìn)制值。
- 返回?
NULL情況:
參數(shù)?number
?為?NULL。
- 若
number
?為非數(shù)字:首先嘗試將其轉(zhuǎn)為數(shù)字后再返回?cái)?shù)字的八進(jìn)制表示,無(wú)法轉(zhuǎn)為數(shù)字則返回0。
示例:
SELECT
OCT(12), // 14
OCT(3.5), // 3
OCT('A'), // 0
OCT('3A'), // 3
OCT(NULL) // NULL
三十八、OCTET_LENGTH 取以字節(jié)為單位的長(zhǎng)度
MySQL OCTET_LENGTH() 函數(shù)返回指定字符串的以字節(jié)為單位的長(zhǎng)度。如果想返回字符的數(shù)量,請(qǐng)使用 CHAR_LENGTH() 函數(shù)或者 CHARACTER_LENGTH() 函數(shù)。
與 LENGTH() 函數(shù)相同。
詳見:八、LENGTH 取以字節(jié)為單位的長(zhǎng)度
三十九、ORD 取第一個(gè)字符的ASCII碼
MySQL ORD() 函數(shù)返回字符串參數(shù)中的第一個(gè)字符的字符代碼。如果第一個(gè)字符是單字節(jié)字符, ORD() 函數(shù)返回字符的 ASCII 值;如果第一個(gè)字符是多字節(jié)字符,返回公式 第一個(gè)字節(jié)代碼 + 第二個(gè)字節(jié)的代碼 * 256 + 第三個(gè)字節(jié)的代碼 * 256 * 256 的結(jié)果。
語(yǔ)法:
ORD(string)
參數(shù)說(shuō)明:
-
string
:必需的。一個(gè)字符串。
返回值:
-
???????首先獲取參數(shù)?
string
?最左側(cè)的字符,然后根據(jù)字符是否多字節(jié)字符按如下規(guī)則返回:- 若第一個(gè)字符是單字節(jié)字符, 返回字符的 ASCII 值。
- 若第一個(gè)字符是多字節(jié)字符,根據(jù)返回公式?
第一個(gè)字節(jié)代碼 + 第二個(gè)字節(jié)的代碼 * 256 + 第三個(gè)字節(jié)的代碼 * 256 * 256
?的結(jié)果。
示例:
SELECT
ORD('abc'), // 97
ORD('a'), // 97
ORD('A'), // 65
ORD('北京') // 15043735
四十、POSITION?查找子串在目標(biāo)串出現(xiàn)的第一個(gè)位置
MySQL POSITION() 函數(shù)返回一個(gè)字符串在另一個(gè)字符串中第一次出現(xiàn)的位置的數(shù)字索引。 POSITION() 函數(shù)是不區(qū)分大小寫的。 POSITION() 函數(shù)與具有兩個(gè)參數(shù)的 INSTR() 函數(shù)和 LOCATE() 函數(shù) 功能相同。語(yǔ)法上有些不同。
語(yǔ)法:
POSITION(substr IN str)
參數(shù)說(shuō)明:
-
substr
:必需的。 在?str
?中搜索的子串。 -
str
:必需的。 被搜索的字符串。
返回值:
-
???????子字符串?
substr
?在字符串?str
?中的位置的數(shù)字索引。(數(shù)字索引從?1
?開始) - 返回0情況:找不到。
- 返回?NULL情況:任意一個(gè)參數(shù)為?
NULL。
示例:
SELECT
POSITION('Wo' IN 'Hello World'), // 7
POSITION('wo' IN 'Hello World'), // 7
POSITION('1' IN 'Hello World'), // 0
POSITION('l' IN NULL) // NULL
四十一、QUOTE?用單引號(hào)包圍字符串
MySQL?QUOTE()
?函數(shù)返回一個(gè)用單引號(hào)包圍的字符串。?QUOTE()
?函數(shù)會(huì)對(duì)?\
,?'
?符號(hào)轉(zhuǎn)義。
語(yǔ)法:
QUOTE(string)
參數(shù)說(shuō)明:
-
string
:必需的。一個(gè)字符串。
返回值:
- 用單引號(hào)包圍的字符串。???????
- 返回NULL情況:參數(shù)為?
NULL。
示例:
SELECT
QUOTE('Hello''word!'), // 'Hello\'word!'
QUOTE('Hello world!'), // 'Hello world!'
QUOTE(NULL) // NULL
四十二、REPEAT?字符串重復(fù)指定的次數(shù)
MySQL?REPEAT()
?函數(shù)將指定的字符串重復(fù)指定的次數(shù)并返回。
語(yǔ)法:
REPEAT(str, count)
參數(shù)說(shuō)明:
-
str
:必需的。 需要重復(fù)的字符串。 -
count
:必需的。 需要重復(fù)的次數(shù)。
返回值:
- ???????字符串重復(fù)指定的次數(shù)并返回。
- 返回空字符串?
''情況:count為0。
- 返回?
NULL情況:
任意一個(gè)參數(shù)為?NULL。
示例:
SELECT
REPEAT('Hello', 3), // HelloHelloHello
REPEAT('MySQL', 0), //
REPEAT('MySQL', -1), //
REPEAT('MySQL', NULL) // NULL
四十三、SOUNDEX 取發(fā)音的 soundex 字符串
MySQL?SOUNDEX()
?函數(shù)返回表示字符串發(fā)音的 soundex 字符串。?SOUNDEX()
?函數(shù)用來(lái)比較兩個(gè)單詞的發(fā)音是否相同。如果兩個(gè)單詞發(fā)音相同,則他們的 soundex 字符串是相同的。
SOUNDEX(string) 函數(shù)只處理參數(shù) string 中的字母,其他非字母字符將被忽略。
語(yǔ)法:
SOUNDEX(string)
參數(shù)說(shuō)明:
-
string
:必需的。一個(gè)字符串。
返回值:
-
???????發(fā)音的 soundex 字符串。
-
標(biāo)準(zhǔn)的 soundex 字符串的長(zhǎng)度為四個(gè)字符,但 SOUNDEX() 函數(shù)返回的字符串長(zhǎng)度可能超過 4。如果您想獲取標(biāo)準(zhǔn)的 soundex 字符串,您可以對(duì) SOUNDEX() 函數(shù)的結(jié)果使用 SUBSTRING() 函數(shù)進(jìn)行截取。
-
示例:
SELECT
SOUNDEX('Hole'), // H400
SOUNDEX('Whole'), // W400
SOUNDEX('Our'), // O600
SOUNDEX('Our123'), // O600
SOUNDEX('123Our123')// O600
四十四、SPACE 取指定數(shù)量空格字符串
MySQL?SPACE()
?函數(shù)返回一個(gè)字符串,它由指定數(shù)量的空格符組成。
語(yǔ)法:
SPACE(count)
參數(shù)說(shuō)明:
-
count
:必需的。組成字符串的空格符號(hào)的數(shù)量。
返回值:
- 由指定數(shù)量的空格組成的字符串。???????
- 返回''情況:
count
?小于 1 。 - 返回?
NULL情況:
參數(shù)為?NULL
示例:
SELECT
LENGTH(SPACE(2)), // 2
LENGTH(SPACE(-1)), // 0
SPACE(NULL) // NULL
四十五、STRCMP?比較兩個(gè)字符串
MySQL?STRCMP()
?函數(shù)比較兩個(gè)字符串并返回比較結(jié)果。STRCMP()
?函數(shù)基于字符串采用的字符排列規(guī)則(collation)比較兩個(gè)字符串。
語(yǔ)法:
STRCMP(str1, str2)
參數(shù)說(shuō)明:
-
str1
:必需的。參與比較的第 1 個(gè)字符串。 -
str2
:必需的。參與比較的第 2 個(gè)字符串。
返回值:
-
???????兩個(gè)字符串比較后的結(jié)果。
- 若
str1
?等于?str1
,?STRCMP()
?函數(shù)將返回?0
。 - 若
str1
?小于?str1
,?STRCMP()
?函數(shù)將返回?-1
。 - 若
str1
?大于?str1
,?STRCMP()
?函數(shù)將返回?1
。 - 返回?
NULL情況:
任意個(gè)參數(shù)為?NULL。
- 若
示例:
SELECT
STRCMP('hello', 'hello'), // 0
STRCMP('hello1', 'hello'), // 1
STRCMP('hello', 'hello1'), // -1
STRCMP('hello', 'world'), // -1
STRCMP(NULL, NULL) // NULL
- 修改排序規(guī)則比較如下:
SET @s1 = _utf8mb4 'hello' COLLATE utf8mb4_general_ci;
SET @s2 = _utf8mb4 'Hello' COLLATE utf8mb4_0900_ai_ci;
SET @s3 = _utf8mb4 'hello' COLLATE utf8mb4_0900_as_cs;
SET @s4 = _utf8mb4 'Hello' COLLATE utf8mb4_0900_as_cs;
SELECT
STRCMP(@s1, @s2),// 排序規(guī)則不同無(wú)法比較直接報(bào)錯(cuò)
STRCMP(@s3, @s4) // -1
四十六、TO_BASE64 以base-64編碼字符串
MySQL TO_BASE64() 函數(shù)將給定字符串以 base-64 形式編碼,并返回編碼后的字符串表示。
FROM_BASE64() 函數(shù)可以解碼 TO_BASE64() 函數(shù)的結(jié)果。
不同于現(xiàn)有的 base-64 方案, MySQL TO_BASE64() 和 FROM_BASE64() 函數(shù)有些特殊的規(guī)則:
- 字母值 62 的編碼是?
'+'。
- 字母值 63 的編碼是?
'/'。
- 編碼輸出由 4 個(gè)可打印字符組成。輸入數(shù)據(jù)的每 3 個(gè)字節(jié)使用 4 個(gè)字符進(jìn)行編碼。如果最后一組長(zhǎng)度不夠 4,則用?
'='
?字符填充。 - 在編碼輸出的每 76 個(gè)字符之后添加一個(gè)換行符,以將長(zhǎng)輸出分成多行。
- 解碼識(shí)別并忽略換行符、回車符、制表符和空格。
語(yǔ)法:
TO_BASE64(str)
參數(shù)說(shuō)明:
-
str
:必需的。 用于?base-64
?編碼的字符串。
返回值:
-
???????以?
base-64
?形式編碼后的字符串。 - 返回?
NULL情況:參數(shù)為NULL。
示例:
SELECT
TO_BASE64('Hello World'), // SGVsbG8gV29ybGQ=
FROM_BASE64(TO_BASE64('Hello World')), // Hello World
TO_BASE64(NULL) // NULL
四十七、UCASE?字符串轉(zhuǎn)為大寫
MySQL UCASE() 函數(shù)將指定字符串轉(zhuǎn)為大寫并返回。UCASE() 函數(shù)是 UPPER() 函數(shù)的別名。
如果想將字符串轉(zhuǎn)換為小寫,請(qǐng)使用 LCASE() 或者 LOWER() 函數(shù)。
詳見:七、UPPER 字母轉(zhuǎn)大寫。
四十八、UNHEX?十六進(jìn)制數(shù)值的字符串轉(zhuǎn)換為字節(jié)
MySQL UNHEX() 函數(shù)將代表十六進(jìn)制數(shù)值的字符串轉(zhuǎn)換為字節(jié),并返回對(duì)應(yīng)的二進(jìn)制字符串。
UNHEX() 函數(shù)的處理過程為從十六進(jìn)制數(shù)值的字符串參數(shù)中每?jī)晌晦D(zhuǎn)換為字節(jié),并將所有的字節(jié)組合起來(lái)作為二進(jìn)制字符串返回。
UNHEX() 函數(shù)是 HEX() 函數(shù)的逆向操作。
語(yǔ)法:
UNHEX(string)
參數(shù)說(shuō)明:
-
string
:必需的。十六進(jìn)制數(shù)值字符串。字符串中只允許出現(xiàn)十六進(jìn)制允許的符號(hào):?0...9
,?A...F
,?a...f
。
返回值:
- ???????二進(jìn)制字符串。
- 返回?
NULL情況:
-
???????string
?不是合法的十六進(jìn)制數(shù)值。 -
number
?為?NULL。
-
- 由于?
UNHEX()
?函數(shù)返回的是二進(jìn)制字符串,因此在 mysql 客戶端顯示的結(jié)果可能是十六進(jìn)制內(nèi)容。請(qǐng)?jiān)诘顷憰r(shí)使用?--binary-as-hex=false
?以禁用將二進(jìn)制內(nèi)容顯示為十六進(jìn)制。
示例:
SELECT
HEX('Hello'), // 48656C6C6F
UNHEX(HEX('Hello')), // Hello
UNHEX('Invalid'), // NULL
UNHEX(NULL) // NULL
- 使用?
--binary-as-hex示例詳見
:二十五、HEX 取參數(shù)的十六進(jìn)制值的字符串表示。
到了這里,關(guān)于MYSQL字符串函數(shù)詳解和實(shí)戰(zhàn)(字符串函數(shù)大全,內(nèi)含示例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!