镇江本地网,佛山百度seo排名,短视频营销推广方案,贵阳公司做网站MySQL提供了许多字符串函数#xff0c;用于处理和操作字符串数据。以下是一些常用的MYSQL字符串函数。 建议收藏以备后续用到查阅参考。 目录
一、CONCAT 拼接字符串
二、CONCAT_WS 拼接字符串
三、SUBSTR 取子字符串
四、SUBSTRING 取子字符串
五、SUBSTRING_INDEX 取子… MySQL提供了许多字符串函数用于处理和操作字符串数据。以下是一些常用的MYSQL字符串函数。 建议收藏以备后续用到查阅参考。 目录
一、CONCAT 拼接字符串
二、CONCAT_WS 拼接字符串
三、SUBSTR 取子字符串
四、SUBSTRING 取子字符串
五、SUBSTRING_INDEX 取子字符串
六、REPLACE 替换子字符串
七、UPPER 字母转大写
八、LENGTH 取以字节为单位的长度
九、TRIM 删除字符串头部和尾部空格
十、RTRIM 删除尾部空格
十一、LTRIM 删除前导空格
十二、REVERSE 反转后字符串
十三、ASCII 转为ASCII 值
十四、BIN 转为二进制
十五、BIT_LENGTH 取位为单位的长度
十六、CHAR 转为字符
十七、CHAR_LENGTH 转为字符后的长度
十八、CHARACTER_LENGTH 转为字符后的长度
十九、ELT 指定参数返回
二十、EXPORT_SET 指定分隔符拼接字符串
二十一、FIELD 取值在列表中的索引
二十二、FIND_IN_SET 分隔串中找字符串
二十三、FORMAT 数字格式化为字符串
二十四、FROM_BASE64 解码BASE64编码的字符串
二十五、HEX 取参数的十六进制值的字符串表示
二十六、INSERT 字符串中插入一个新的字符串
二十七、INSTR 查找子串在目标串出现的第一个位置
二十八、LCASE 转为小写
二十九、LOWER 转为小写
三十、LEFT 取左子串字符串
三十一、RIGHT 取右子串字符串
三十二、LOCATE 查找第一个子串的位置
三十三、LPAD 左侧填充指定的字符串使其达到指定的长度
三十四、RPAD 右侧填充指定的字符串使其达到指定的长度
三十五、MAKE_SET 按参数1的二进制位反转返回对应位置参数以逗号分隔集合
三十六、MID 取指定位置指定长度的子字符串
三十七、OCT 数字转八进制
三十八、OCTET_LENGTH 取以字节为单位的长度
三十九、ORD 取第一个字符的ASCII码
四十、POSITION 查找子串在目标串出现的第一个位置
四十一、QUOTE 用单引号包围字符串
四十二、REPEAT 字符串重复指定的次数
四十三、SOUNDEX 取发音的 soundex 字符串
四十四、SPACE 取指定数量空格字符串
四十五、STRCMP 比较两个字符串
四十六、TO_BASE64 以base-64编码字符串
四十七、UCASE 字符串转为大写
四十八、UNHEX 十六进制数值的字符串转换为字节 一、CONCAT 拼接字符串
MySQL CONCAT() 函数用来按顺序拼接指定的 2 个或多个字符串并返回拼接后的字符串。如果您需要使用分隔符连接多个字符串请使用 CONCAT_WS() 函数。如果拼接的参数中一个为 NULL, 则返回 NULL。
语法
CONCAT(string1, string2, ..., stringN)
参数说明
string1, string2, ..., stringN 必需的至少应指定一个字符串拼接中若有一个为 NULL, 则返回 NULL
返回值
返回拼接后的字符串。只有一个参数返回参数本身。若有一个参数为NULL返回NULL。无参数时报错ERROR 1582 (42000): Incorrect parameter count in the call to native function CONCAT。
示例
SELECT CONCAT(Hello, World); // HelloWorld
SELECT CONCAT(Hello, NULL); // NULl
二、CONCAT_WS 拼接字符串
MySQL CONCAT_WS() 函数用来通过指定的分隔符按顺序拼接指定的 2 个或多个字符串并返回拼接后的字符串。
忽略String1,String2... 中的NULL值。
语法
CONCAT_WS(separator, string1, string2, ..., stringN)参数说明 separator分隔符必须的。您可以使用单个字符也可以使用字符串。 string1, string2, ..., stringN必需的至少应指定一个字符串如果拼接的参数为 NULL, 则会被忽略当不指定字符串时MySQL 将会报错 ERROR 1582 (42000): Incorrect parameter count in the call to native function CONCAT_WS
返回值
分隔符连接后的多个字符串。返回 NULL情况separator 为 NULL。
示例
SELECT CONCAT_WS(-, Hello, World), // Hello-WorldCONCAT_WS(-, Hello, NULL, World), // Hello-WorldSELECT CONCAT_WS(-, Hello); // Hello
三、SUBSTR 取子字符串
MYSQL SUBSTR()函数是 SUBSTRING() 函数的别名。 四、SUBSTRING 取子字符串
MySQL SUBSTRING() 函数从一个字符串中返回一个从指定位置开始的指定长度的子字符串。 SUBSTR() 等同于 SUBSTRING() 函数。
语法
有4种形式
SUBSTRING(str, pos)
SUBSTRING(str FROM pos)
SUBSTRING(str, pos, len)
SUBSTRING(str FROM pos FOR len)
参数说明
str必需的从中提取子字符串的原字符串。pos必需的开始提取的位置。它可以是正数或者负数。如果是正数则从字符串的开头为起始位置确定开始提取的位置提取子字符串。如果是负数则从字符串的结尾为起始位置确定开始提取的位置提取子字符串。len可选的。子字符串的长度字符数。如果不指定则提取到原字符串的结尾。
返回值
当 pos 为 0 或者超过原字符串的长度时 返回空串 。当 pos 为负数时从字符串尾部向前计数。当 pos len 超过原字符串的长度时从pos位置提取到原字符串的结尾。当参数为 NULL 时 返回 NULL。
示例
SELECTSUBSTRING(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() 函数返回一个字符串中指定分隔符出现在指定次数之前的子字符串。
语法
SUBSTRING_INDEX(str, delim, count)参数说明 str必需的。原字符串。 delim必需的。在原字符串中搜索的分隔符。 count必需的。分隔符出现的次数。如果 count 为负数则从字符串尾部向前开始计数分隔符返回分隔符之后的子字符串。
返回值
从左往右数count为正数返回一个字符串中指定分隔符出现在指定次数之前的子字符串。从右往左数count为负数返回一个字符串中指定分隔符出现在指定次数之前的子字符串。返回空情况count为0。返回 NULL情况任意一个参数为 NULL。
示例
SELECTSUBSTRING_INDEX(www.baidu.com, ., 2), // www.baiduSUBSTRING_INDEX(www.baidu.com, ., -2), // baidu.comSUBSTRING_INDEX(www.baidu.com, ., 0) //
六、REPLACE 替换子字符串
MySQL REPLACE() 函数将字符串中出现的所有子字符串替换为新的子字符串。 REPLACE() 函数是基于字符的替换并且替换字符串时是区分大小写的。
语法
REPLACE(str, from_str, to_str)
参数说明
str必需的原字符串。from_str必需的被替换的子字符串。to_str必需的用来替换的新子字符串。
返回值
返回 str 中的所有 from_str 被 to_str 替换后的字符串。当任意一个参数为 NULL 时 REPLACE() 函数将返回 NULL。
示例
SELECTREPLACE(Hello World, World, Alice), // Hello AliceREPLACE(Hello World, l, L), // HeLLo WorLdREPLACE(hello World, h, HH) // HHello World
七、UPPER 字母转大写
MySQL UPPER() 函数将指定字符串转为大写并返回。 UCASE() 函数是 UPPER() 函数的别名。
如果想将字符串转换为小写请使用 LCASE() 或者 LOWER() 函数。
语法
UPPER(str)
参数说明
str必需的。 被处理的字符串。
返回值
定字符串的大写形式。当参数 str 为 NULL 时 UPPER() 函数将返回 NULL。
示例
SELECT UPPER(name)
FROM film
LIMIT 3;-------
|FILM0 |
-------
|FILM1 |
-------
|FILM2 |
-------
八、LENGTH 取以字节为单位的长度
MySQL LENGTH() 函数返回指定字符串的以字节为单位的长度。如果想返回字符的数量请使用 CHAR_LENGTH() 函数或者 CHARACTER_LENGTH() 函数。
LENGTH() 函数与 OCTET_LENGTH() 函数相同。
语法
LENGTH(string)
参数说明
string必需的。需要计算长度的字符串。参数可以是其他的类型比如数字或者日期等LENGTH() 函数会首先将其转为字符串再计算长度。
返回值
返回指定字符串的以字节为单位的长度即字节的数量。当参数为 NULL 时 返回 NULL。
示例
SELECTLENGTH(Hello), // 5LENGTH(), // 0LENGTH(20), // 2LENGTH(-20), // 3LENGTH(20), // 2LENGTH(NOW()), // 19LENGTH(CURDATE()), // 10LENGTH(你好), // 6LENGTH(NULL) // NULL
九、TRIM 删除字符串头部和尾部空格
MySQL TRIM() 函数从指定字符串的开头和结尾删除由指定字符组成的最长字符串。如果只想删除字符串的前导空格请使用 LTRIM() 函数如果只想删除字符串的尾随空格请使用 RTRIM() 函数。
语法
TRIM(str)
TRIM(remove_str FROM str)
TRIM({BOTH | LEADING | TRAILING} remove_str FROM str)
参数说明
str必需的。需要处理的字符串。remove_str可选的。需要删除的前缀和后缀字符串。如果不指定这个 remove_str则默认值为空格。BOTH代表同时删除前导和尾随的字符。LEADING代表只删除前导字符。TRAILING代表只删除尾随的字符。如果不指定 {BOTH | LEADING | TRAILING}则默认值为 BOTH。
返回值
从指定字符串的开头、结尾或者两端删除由指定字符组成的最长字符串。 当参数为 NULL 时 TRIM() 函数将返回 NULL。
示例
SELECTTRIM( Hello ), // HelloTRIM(BOTH FROM Hello ), // HelloTRIM(LEADING FROM Hello ), // Hello 尾部还有空格TRIM(TRAILING FROM Hello ), // Hello头部还有空格TRIM(_ FROM ___Hello___), // HelloTRIM(BOTH _ FROM ___Hello___), // HelloTRIM(LEADING _ FROM ___Hello___), // Hello___TRIM(TRAILING _ FROM ___Hello___), // ___HelloTRIM(_# FROM _#_#_Hello_#_#), // _HelloTRIM(BOTH _# FROM _#_#_Hello_#_#), // _HelloTRIM(LEADING _# FROM _#_#_Hello_#_#),// _Hello_#_#TRIM(TRAILING _# FROM _#_#_Hello_#_#)// _#_#_Hello
十、RTRIM 删除尾部空格
MySQL RTRIM() 函数删除指定字符串的尾部空格并返回没有尾部空格的字符串。如果删除字符串的尾随空格请使用 RTRIM() 函数如果想同时删除字符串的前导和尾随空格请使用 TRIM() 函数。
语法
RTRIM(str)参数说明
str必需的。需要删除尾部空格的字符串。
返回值
删除了尾部空格的字符串。返回 NULL情况参数为 NULL 。
示例
SELECTRTRIM( Hello ), // Hello已删除尾部空格RTRIM(NULL); // NULL十一、LTRIM 删除前导空格
MySQL LTRIM() 函数删除指定字符串的前导空格并返回没有前导空格的字符串。如果删除字符串的尾随空格请使用 RTRIM() 函数如果想同时删除字符串的前导和尾随空格请使用 TRIM() 函数。
语法
LTRIM(str)参数说明
str必需的。需要删除前导空格的字符串。
返回值
删除了前导空格的字符串。返回NULL情况参数为 NULL。
示例
SELECTLTRIM( Hello ), // Hello 尾部空格未删除LTRIM(NULL) // NULL十二、REVERSE 反转后字符串
MySQL REVERSE() 函数返回反转后的字符串。 REVERSE() 函数基于字符操作而不是基于字节。
语法
REVERSE(str)
参数说明
str必需的。需要反转的字符串。
返回值
返回反转后的字符串。当参数为 NULL 时 REVERSE() 函数将返回 NULL。
示例
SELECTREVERSE(ABC), // CBAREVERSE(abc), // cbaREVERSE(123), // 231REVERSE(NULL) // NULL十三、ASCII 转为ASCII 值
MySQL ASCII() 函数将指定的字符转为对应的 ASCII 值。ASCII() 只返回由指定的字符串的第一个字符的 ASCII 值。
语法
ASCII(character)参数说明
character必需的。 要返回 ASCII 值的字符。 如果多余一个字符它将只返回第一个字符的 ASCII 值。
返回值
给定的字符串的第一个字符的 ASCII 值。返回 NULL情况character 为 NULL。
示例
SELECT ASCII(A); // 65十四、BIN 转为二进制
MySQL BIN() 函数返回给定数字的二进制值的字符串表示。
语法
BIN(number)参数说明 number必需的。需要以二进制表示的数字。
返回值
表示给定数字的二进制值。返回 NULL情况number 为 NULL。
示例
SELECTBIN(2), // 10BIN(3.6), // 11BIN(3A), // 11BIN(NULL) // NULL十五、BIT_LENGTH 取位为单位的长度
MySQL BIT_LENGTH() 函数以位为单位返回给定字符串的长度。
如果想以字节为单位返回字符串的长度请使用 LENGTH() 函数。
如果想返回字符串中的字符数量请使用 CHAR_LENGTH() 或者 CHARACTER_LENGTH() 函数。
语法
BIT_LENGTH(string)参数说明 string必需的。 需要计算位长度的字符串。
返回值
给定字符串的位长度。返回 NULL情况string 为 NULL。若参数不为字符串会尝试转为字符串
示例
SELECTBIT_LENGTH(a), // 8BIT_LENGTH(string), // 48BIT_LENGTH(1), // 8BIT_LENGTH(01), // 8BIT_LENGTH(01), // 16BIT_LENGTH(你好), // 48BIT_LENGTH(NULL) // NULL十六、CHAR 转为字符
MySQL CHAR() 函数将每个参数对应的整数转为对应的字符并将这些字符组成一个字符串返回。
忽略值为NULL的参数。
语法
CHAR(num1, [num2, ...])参数说明 num1, [num2, ...]必需的。一些整数或者能转为整数的值。
返回值
一个字符串其中的字符由每个整数参数对应的字符组成。参数NULL直接被忽略只有一个参数且为NULL时返回空。
示例
SELECTCHAR(65, 66, 67), // ABCCHAR(65, 66, 67), // ABCCHAR(65.4, 66.5, 67.6), // ABCCHAR(65, 66, NULL, 67), // ABCCHAR(NULL) // 十七、CHAR_LENGTH 转为字符后的长度
在 MySQL 中 CHAR_LENGTH() 返回给定字符串的长度。 CHAR_LENGTH() 返回的是字符串中字符的数量与字符编码无关。此函数是 CHARACTER_LENGTH() 函数的别名。
语法
CHARACTER_LENGTH(string)参数说明 string必需的。 需要计算长度的字符串。
返回值
给定字符串的长度字符的个数。返回 NULL情况string 为 NULL
示例
SELECT CHAR_LENGTH(cxian); // 5
十八、CHARACTER_LENGTH 转为字符后的长度
在 MySQL 中 CHARACTER_LENGTH() 返回给定字符串的长度。 CHARACTER_LENGTH() 返回的是字符串中字符的数量与字符编码无关。此函数是 CHAR_LENGTH() 函数的别名。
用法同CHAR_LENGTH(number)函数。 十九、ELT 指定参数返回
MySQL ELT() 函数从第二个参数开始查找由第一个参数指定位置的参数并作为字符串返回。
语法
ELT(pos, str1, str2, ...)参数说明 pos必需的。一个用于指定位置的数字。 str1, str2, ...必需的。字符串参数列表。
返回值
由 pos 指定位置的参数。pos大于0返回第pos1的参数。返回 NULL情况pos 小于 1 或者超过参数的数量。
示例
SELECTELT(1, Aa, Bb, Cc), // AaELT(3, Aa, Bb, Cc), // CcELT(-1, Aa, Bb, Cc), // NULLELT(0, Aa, Bb, Cc), // NULLELT(4, Aa, Bb, Cc) // NULL二十、EXPORT_SET 指定分隔符拼接字符串
语法
EXPORT_SET(bits, on, off, separator, length)参数说明 bits必需的。一个数字。将 bits 转为二进制并反转后的各个位的值决定 on 还是 off 出现在该位置。 on必需的。当位值为 1 时使用的字符串。 off必需的。当位值为 0 时使用的字符串。 separator可选的。分隔符或者分隔字符串默认值为 ,。 length可选的。集合的元素的个数默认值为 64。
返回值
根据 bits 对应的二进制并反转后的值挑选对应的字符串并返回一个逗号分隔的字符串集合。
示例
SELECTEXPORT_SET(5, Aa, Bb, #, 4), // Aa#Bb#Aa#Bb// bits 5 5 的二进制位 101, 总长度为 4左边补 0 变为 0101。然后反转变为 1010。// 按 1010 中的每位的值使用 on 或者 off:// 第一位为 1则使用 Aa。// 第二位为 0则使用 Bb。// 第三位为 1则使用 Aa。// 第四位为 0则使用 Bb。// 最后将所有的字符串使用分隔符 # 组合起来即Aa#Bb#Aa#Bb。EXPORT_SET(5, Y, N, ,, 4), // Y,N,Y,NEXPORT_SET(5, 1, 0, ,, 10), // 1,0,1,0,0,0,0,0,0,0EXPORT_SET(0, Y, N, ,, 4) // N,N,N,N二十一、FIELD 取值在列表中的索引
MySQL FIELD() 函数返回一个指定的值在给定的列表中的索引。
语法
FIELD(value, v1, v2, ..., vN)参数说明
value必须的。要在列表中查找的值。v1, v2, ..., vN必须的。被搜索的列表中的各个元素。
返回值
指定的值对应的位置索引索引从1开始。返回0情况 找不到指定的值。查找的值为 NULL。
示例
SELECT FIELD(A, A, B, C), // 1FIELD(1, A, B, C), // 0FIELD(NULL, NULL, B, C) // 0二十二、FIND_IN_SET 分隔串中找字符串
MySQL FIND_IN_SET() 函数返回字符串在一个逗号分隔的字符串列表中的索引。 FIND_IN_SET() 函数与 FIELD() 函数类似不同的是 FIELD() 中的列表是由多个参数组成的并且参数的类型也不一定是字符串。
语法
FIND_IN_SET(string, string_list)参数说明 string必须的。这是要搜索的字符串。 string_list必须的。这是一个使用逗号分隔的字符串列表。
返回值
找到则返回对应的位置索引。返回 0情况 找不到。找到空串。返回 NULL情况 任何一个参数为NULL。
示例
SELECT FIND_IN_SET(A, A,B,C), // 1FIND_IN_SET(1, A,B,C), // 0FIND_IN_SET(NULL, A,B,C), // NULLFIND_IN_SET(D, NULL) // NULL二十三、FORMAT 数字格式化为字符串
MySQL FORMAT() 函数将数字四舍五入到指定的小数位数并按照 #,###,###.##之类的格式进行格式化然后将结果作为字符串返回。
语法
FORMAT(number, decimal_places)参数说明
number必需的。 需要格式化的数字。decimal_places必需的。 要保留的小数位数。
返回值
指定小数位数的类似于 #,###,###.## 格式的字符串。有一定规则 若以数字开头则将开头的数字部分转为数字。若不能转为数字则按照 0 处理。返回 NULL情况number为null。无小数点情况decimal_places为0。
示例
SELECTFORMAT(111111, 2), // 111,111.00FORMAT(111111.111, 2),// 111,111.11FORMAT(111111.111, 0),// 111,111FORMAT(111111, 2), // 111,111.00FORMAT(11111A, 2), // 11,111.00FORMAT(A11111, 2), // 0.00FORMAT(NULL, 2) // NULL二十四、FROM_BASE64 解码BASE64编码的字符串
MySQL FROM_BASE64() 函数解码 base-64 编码的数据并将结果作为二进制字符串返回。
FROM_BASE64() 函数可以解码 TO_BASE64() 函数的结果。
不同于现有的 base-64 方案 MySQL TO_BASE64() 和 FROM_BASE64() 函数有些特殊的规则
字母值 62 的编码是 .字母值 63 的编码是 /.编码输出由 4 个可打印字符组成。输入数据的每 3 个字节使用 4 个字符进行编码。如果最后一组长度不够 4则用 字符填充。在编码输出的每 76 个字符之后添加一个换行符以将长输出分成多行。解码识别并忽略换行符、回车符、制表符和空格。
语法
FROM_BASE64(str)参数说明 str必需的。 用于 base-64 解码的字符串。
返回值
将 base-64 编码的数据解码结果作为二进制字符串返回。返回 NULL情况str 为 NULL。由于 FROM_BASE64() 函数返回的是二进制字符串因此在 mysql 客户端显示的结果可能是十六进制内容。请在登陆时使用 --binary-as-hexfalse 以禁用将二进制内容显示为十六进制。
示例一登陆时不使用--binary-as-hex 示例二登陆时使用--binary-as-hexfalse 注使用Navicat Premium连接数据库显示效果如示例二。
二十五、HEX 取参数的十六进制值的字符串表示
MySQL HEX() 函数返回给定数字或字符串的十六进制值的字符串表示。
语法
HEX(number)
HEX(string)参数说明 number/string必需的。需要以十六进制表示的数字或字符串。
返回值
参数的十六进制值。返回 NULL情况number/string 为 NULL。
示例
SELECTHEX(255), // FFHEX(b), // 62HEX(abc), // 616263HEX(NULL) // NULL
二十六、INSERT 字符串中插入一个新的字符串
MySQL INSERT() 函数在一个字符串中插入一个新的字符串该新的字符串会替换源字符串中指定位置开始的指定长度的子字符串。
语法
INSERT(str, pos, len, newstr)参数说明
str必需的。 需要处理的字符串。pos必需的。 开始插入新字符串 newstr 的位置。pos 的值从 1 开始。len必需的。 要被替换的字符的数量。newstr必需的。 要插入的新字符串。
返回值
被处理后的原字符串 str其中 str 中从 pos 开始长度为 len 的子字符串被 newstr 替换掉。不替换情况 len为0。pos不在字符串长度范围内。若len str.length - pos则从位置 pos 替换str.length - pos的字符串返回 NULL情况 任何参数是 NULL。
示例
SELECTINSERT(NULL, 6, 1, ), // NULLINSERT(Hello_World, 6, 1, ), // Hello WorldINSERT(Hello_World, 6, 20, ), // Hello
二十七、INSTR 查找子串在目标串出现的第一个位置
MySQL INSTR() 函数返回一个子字符串在一个字符串中第一次出现的位置的数字索引。 INSTR() 函数是不区分大小写的。 INSTR() 函数与具有两个参数的 LOCATE() 函数的和 POSITION() 功能相同。
语法
INSTR(str, substr)参数说明
str必需的。 被搜索的字符串。substr必需的。 在 str 中搜索的子串。
返回值
子字符串 substr 在字符串 str 中的位置的数字索引。数字索引从 1 开始返回 0情况找不到。返回 NULL情况任意一个参数为 NULL。
示例
SELECTINSTR(Hello World, He), // 1INSTR(Hello World, he), // 1INSTR(Hello World, do), // 0INSTR(Hello World, NULL) // NULL
二十八、LCASE 转为小写
MySQL LCASE() 函数将指定字符串转为小写并返回。 LCASE() 函数是 LOWER() 函数的别名。 如果想将字符串转换为大写请使用 UCASE() 或者 UPPER() 函数。
语法
LCASE(str)参数说明
str必需的。 被处理的字符串。
返回值
指定字符串的小写形式。返回 NULL情况str为NULL。
示例
SELECT LCASE(Hello), // helloLCASE(NULL) // NULL
二十九、LOWER 转为小写
MySQL LOWER() 函数将指定字符串转为小写并返回。 LCASE() 函数是 LOWER() 函数的别名。 如果想将字符串转换为大写请使用 UCASE() 或者 UPPER() 函数。 详见二十七、LCASE 转为小写
三十、LEFT 取左子串字符串
MySQL LEFT() 函数从指定字符串的左侧返回指定数量的字符组成的字符串。如果想从字符串的右侧提取字符请使用 RIGHT() 函数。
语法
LEFT(string, length)参数说明
string必需的。需要从中提取字符的字符串。length必需的。需要从字符串中提取字符的数量。
返回值
指定数量的字符组成的左子字符串。返回原字符串情况length大于string的长度。返回空串情况length为小于等于0。返回 NULL情况任意一个参数为 NULL。
示例
SELECTLEFT(Hello, 2), // HeLEFT(Hello, 6), // HelloLEFT(Hello, 0), // LEFT(Hello, -1), //LEFT(Hello, NULL) // NULL三十一、RIGHT 取右子串字符串
MySQL RIGHT() 函数从指定字符串的右侧返回指定数量的字符组成的字符串。如果想从字符串的左侧提取字符请使用 LEFT() 函数。
操作参考三十、LEFT 取左子串字符串相似。不同是LEFT 是左边而RIGHT是右边。(这里不再举例)
三十二、LOCATE 查找第一个子串的位置
MySQL LOCATE() 函数返回一个字符串在另一个字符串中第一次出现的位置的数字索引。 LOCATE() 函数是不区分大小写的。 LOCATE() 函数与具有两个参数的 INSTR() 函数的和 POSITION() 功能相同。
语法
LOCATE(substr, str)
LOCATE(substr, str, startPos)
参数说明
substr必需的。 在 str 中搜索的子串。str必需的。 被搜索的字符串。startPos可选的。 在 str 中开始搜索的位置从 1 开始。
返回值
子字符串 substr 在字符串 str 中的位置的数字索引。数字索引从 1 开始返回 0情况 找不到。startPos 为 0。返回 NULL情况任意一个参数为 NULL。
示例
SELECTLOCATE(He, Hello World), // 1LOCATE(ho, Hello World), // 1LOCATE(go, Hello World), // 0LOCATE(NULL, Hello World), // NULL三十三、LPAD 左侧填充指定的字符串使其达到指定的长度
MySQL LPAD() 函数在字符串的左侧填充指定的字符串使其达到指定的长度。如果想在字符串的右侧填充字符串请使用 RPAD() 函数。
语法
LPAD(str, len, padstr)参数说明
str必需的。需要被填充的字符串。len必需的。填充字符串需要达到的长度。padstr可选的。被用来填充到原字符串左侧的字符串。
返回值
填充后的字符串。若len 小于原字符串 str 的长度 str 将被截断到 len 的长度。返回 NULL情况 len 为负数。任意一个参数为 NULL。
示例
SELECTLPAD(oh, 5, o), // oooooohLPAD(oh, 1, 1), // oLPAD(oh, -1, o), // NULLLPAD(World, 15, Hello) // HelloHelloWorld三十四、RPAD 右侧填充指定的字符串使其达到指定的长度
MySQL RPAD() 函数在一个字符串的右侧填充指定的字符串使其达到指定的长度。如果想在字符串的左侧填充字符串请使用 LPAD() 函数。 操作与LPAD相似。不同点是LPAD是多左侧RPAD是右侧。详见三十三、LPAD 左侧填充指定的字符串使其达到指定的长度。
三十五、MAKE_SET 按参数1的二进制位反转返回对应位置参数以逗号分隔集合
MySQL MAKE_SET() 函数返回一个逗号分隔的字符串集合该函数通过第一个参数对应的二进制决定是否其他字符串参数是否添加到结果集合中。
语法
MAKE_SET(bits, str1, str2, ...)参数说明 bits必需的。一个数字。将 bits 转为二进制并反转后的各个位决定 str1, str2, ... 是否出现在结果中。 str1, str2, ...必需的。备选字符串。str1, str2, ... 分别由 bits 二进制并反转后的值中的第 1, 2, ... 决定是否出现在结果中。
返回值
根据 bits 对应的二进制并反转后的值挑选对应的字符串并返回一个逗号分隔的字符串集合。NULL参数直接被忽略。若bits为0返回空。
示例
SELECTMAKE_SET(0, a, b, c, d), //MAKE_SET(1, a, b, c, d), // aMAKE_SET(2, a, b, c, d), // a,bMAKE_SET(3, a, b, c, d), // bMAKE_SET(4, a, b, c, d). // cbits为0返回空bits为1二进制为0001反转后为1000对应a返回a。bits为2二进制为0010反转后为0100对应b返回b。bits为3二进制为0011反转后为1100对应ab返回a,b。bits为4二进制为0100反转后为0010对应c返回c。
三十六、MID 取指定位置指定长度的子字符串
MySQL MID() 函数返回一个字符串中从指定位置开始的指定长度的子字符串。
MID(str, pos, len) 等同于 SUBSTRING(str, pos, len) 和 SUBSTR(str, pos, len) 函数。
语法
MID(str, pos, len)详见四、SUBSTRING 取子字符串
三十七、OCT 数字转八进制
MySQL OCT() 函数返回给定数字的八进制值的字符串表示。
语法
OCT(number)参数说明 number必需的。需要以八进制表示的数字。
返回值
给定数字的八进制值。返回 NULL情况参数 number 为 NULL。若number 为非数字首先尝试将其转为数字后再返回数字的八进制表示无法转为数字则返回0。
示例
SELECTOCT(12), // 14OCT(3.5), // 3OCT(A), // 0OCT(3A), // 3OCT(NULL) // NULL三十八、OCTET_LENGTH 取以字节为单位的长度
MySQL OCTET_LENGTH() 函数返回指定字符串的以字节为单位的长度。如果想返回字符的数量请使用 CHAR_LENGTH() 函数或者 CHARACTER_LENGTH() 函数。 与 LENGTH() 函数相同。
详见八、LENGTH 取以字节为单位的长度
三十九、ORD 取第一个字符的ASCII码
MySQL ORD() 函数返回字符串参数中的第一个字符的字符代码。如果第一个字符是单字节字符 ORD() 函数返回字符的 ASCII 值如果第一个字符是多字节字符返回公式 第一个字节代码 第二个字节的代码 * 256 第三个字节的代码 * 256 * 256 的结果。
语法
ORD(string)参数说明 string必需的。一个字符串。
返回值
首先获取参数 string 最左侧的字符然后根据字符是否多字节字符按如下规则返回 若第一个字符是单字节字符 返回字符的 ASCII 值。若第一个字符是多字节字符根据返回公式 第一个字节代码 第二个字节的代码 * 256 第三个字节的代码 * 256 * 256 的结果。
示例
SELECTORD(abc), // 97ORD(a), // 97ORD(A), // 65ORD(北京) // 15043735四十、POSITION 查找子串在目标串出现的第一个位置
MySQL POSITION() 函数返回一个字符串在另一个字符串中第一次出现的位置的数字索引。 POSITION() 函数是不区分大小写的。 POSITION() 函数与具有两个参数的 INSTR() 函数和 LOCATE() 函数 功能相同。语法上有些不同。
语法
POSITION(substr IN str)参数说明 substr必需的。 在 str 中搜索的子串。 str必需的。 被搜索的字符串。
返回值
子字符串 substr 在字符串 str 中的位置的数字索引。数字索引从 1 开始返回0情况找不到。返回 NULL情况任意一个参数为 NULL。
示例
SELECTPOSITION(Wo IN Hello World), // 7POSITION(wo IN Hello World), // 7POSITION(1 IN Hello World), // 0POSITION(l IN NULL) // NULL四十一、QUOTE 用单引号包围字符串
MySQL QUOTE() 函数返回一个用单引号包围的字符串。 QUOTE() 函数会对 \, 符号转义。
语法
QUOTE(string)参数说明 string必需的。一个字符串。
返回值
用单引号包围的字符串。返回NULL情况参数为 NULL。
示例
SELECTQUOTE(Helloword!), // Hello\word!QUOTE(Hello world!), // Hello world!QUOTE(NULL) // NULL四十二、REPEAT 字符串重复指定的次数
MySQL REPEAT() 函数将指定的字符串重复指定的次数并返回。
语法
REPEAT(str, count)参数说明 str必需的。 需要重复的字符串。 count必需的。 需要重复的次数。
返回值
字符串重复指定的次数并返回。返回空字符串 情况count为0。返回 NULL情况任意一个参数为 NULL。
示例
SELECTREPEAT(Hello, 3), // HelloHelloHelloREPEAT(MySQL, 0), // REPEAT(MySQL, -1), // REPEAT(MySQL, NULL) // NULL四十三、SOUNDEX 取发音的 soundex 字符串
MySQL SOUNDEX() 函数返回表示字符串发音的 soundex 字符串。 SOUNDEX() 函数用来比较两个单词的发音是否相同。如果两个单词发音相同则他们的 soundex 字符串是相同的。
SOUNDEX(string) 函数只处理参数 string 中的字母其他非字母字符将被忽略。
语法
SOUNDEX(string)参数说明 string必需的。一个字符串。
返回值
发音的 soundex 字符串。 标准的 soundex 字符串的长度为四个字符但 SOUNDEX() 函数返回的字符串长度可能超过 4。如果您想获取标准的 soundex 字符串您可以对 SOUNDEX() 函数的结果使用 SUBSTRING() 函数进行截取。
示例
SELECTSOUNDEX(Hole), // H400SOUNDEX(Whole), // W400SOUNDEX(Our), // O600SOUNDEX(Our123), // O600SOUNDEX(123Our123)// O600
四十四、SPACE 取指定数量空格字符串
MySQL SPACE() 函数返回一个字符串它由指定数量的空格符组成。
语法
SPACE(count)参数说明 count必需的。组成字符串的空格符号的数量。
返回值
由指定数量的空格组成的字符串。返回情况count 小于 1 。返回 NULL情况参数为 NULL
示例
SELECTLENGTH(SPACE(2)), // 2LENGTH(SPACE(-1)), // 0SPACE(NULL) // NULL
四十五、STRCMP 比较两个字符串
MySQL STRCMP() 函数比较两个字符串并返回比较结果。STRCMP() 函数基于字符串采用的字符排列规则collation比较两个字符串。
语法
STRCMP(str1, str2)参数说明 str1必需的。参与比较的第 1 个字符串。 str2必需的。参与比较的第 2 个字符串。
返回值
两个字符串比较后的结果。 若str1 等于 str1 STRCMP() 函数将返回 0。若str1 小于 str1 STRCMP() 函数将返回 -1。若str1 大于 str1 STRCMP() 函数将返回 1。返回 NULL情况任意个参数为 NULL。
示例
SELECTSTRCMP(hello, hello), // 0STRCMP(hello1, hello), // 1STRCMP(hello, hello1), // -1STRCMP(hello, world), // -1STRCMP(NULL, NULL) // NULL修改排序规则比较如下
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),// 排序规则不同无法比较直接报错STRCMP(s3, s4) // -1
四十六、TO_BASE64 以base-64编码字符串
MySQL TO_BASE64() 函数将给定字符串以 base-64 形式编码并返回编码后的字符串表示。 FROM_BASE64() 函数可以解码 TO_BASE64() 函数的结果。 不同于现有的 base-64 方案 MySQL TO_BASE64() 和 FROM_BASE64() 函数有些特殊的规则
字母值 62 的编码是 。字母值 63 的编码是 /。编码输出由 4 个可打印字符组成。输入数据的每 3 个字节使用 4 个字符进行编码。如果最后一组长度不够 4则用 字符填充。在编码输出的每 76 个字符之后添加一个换行符以将长输出分成多行。解码识别并忽略换行符、回车符、制表符和空格。
语法
TO_BASE64(str)参数说明 str必需的。 用于 base-64 编码的字符串。
返回值
以 base-64 形式编码后的字符串。返回 NULL情况参数为NULL。
示例
SELECTTO_BASE64(Hello World), // SGVsbG8gV29ybGQFROM_BASE64(TO_BASE64(Hello World)), // Hello WorldTO_BASE64(NULL) // NULL四十七、UCASE 字符串转为大写
MySQL UCASE() 函数将指定字符串转为大写并返回。UCASE() 函数是 UPPER() 函数的别名。 如果想将字符串转换为小写请使用 LCASE() 或者 LOWER() 函数。
详见七、UPPER 字母转大写。
四十八、UNHEX 十六进制数值的字符串转换为字节
MySQL UNHEX() 函数将代表十六进制数值的字符串转换为字节并返回对应的二进制字符串。 UNHEX() 函数的处理过程为从十六进制数值的字符串参数中每两位转换为字节并将所有的字节组合起来作为二进制字符串返回。 UNHEX() 函数是 HEX() 函数的逆向操作。
语法
UNHEX(string)参数说明 string必需的。十六进制数值字符串。字符串中只允许出现十六进制允许的符号 0...9, A...F, a...f。
返回值
二进制字符串。返回 NULL情况 string 不是合法的十六进制数值。number 为 NULL。由于 UNHEX() 函数返回的是二进制字符串因此在 mysql 客户端显示的结果可能是十六进制内容。请在登陆时使用 --binary-as-hexfalse 以禁用将二进制内容显示为十六进制。
示例
SELECTHEX(Hello), // 48656C6C6FUNHEX(HEX(Hello)), // HelloUNHEX(Invalid), // NULLUNHEX(NULL) // NULL使用 --binary-as-hex示例详见二十五、HEX 取参数的十六进制值的字符串表示。