MySQL字符串函数
ASCII(str)
返回str字符串中最左边字符的ascii码值,如果是空串则返回0,如果str是null则返回null
1
2
3
4
5
6
7
|
• mysql> SELECT ASCII( 'a' ); • -> 97 • mysql> SELECT ASCII( 'b' ); • -> 98 • mysql> SELECT ASCII( 'ab' ); • -> 97 只返回第一个字符的ASCII码 |
字符串比较大小的时候就是根据ASCII 比较大小
CHAR(N,… [USING charset_name])
将括号中的N转化成ascii码对应的字符,返回这些字符组成的字符串,其中的null会被忽略
1
2
3
4
5
6
7
8
9
10
|
• mysql> SELECT CHAR(77,121,83,81, '76' ); • -> 'MySQL' • mysql> SELECT CHAR(77,77.3, '77.3' ); • -> 'MMM‘ • mysql> SELECT CHARSET(CHAR(X '65' )), CHARSET(CHAR(X '65' USING utf8)); • +----------------------+---------------------------------+ • | CHARSET(CHAR(X '65' )) | CHARSET(CHAR(X '65' USING utf8)) | • +----------------------+---------------------------------+ • | binary | utf8 | • +----------------------+---------------------------------+ |
CHAR_LENGTH(str)
返回字符串的字符长度
1
2
3
4
5
6
7
|
mysql> select char_length( 'asdf' ); >4 mysql> mysql> select char_length(4567); >4 |
CONCAT(str1,str2,…)
• 返回括号里所有参数字符串连接在一起,当其中有参数为NULL时则返回NULL
1
2
3
4
5
6
|
• mysql> SELECT CONCAT( 'My' , 'S' , 'QL' ); • -> 'MySQL' • mysql> SELECT CONCAT( 'My' , NULL, 'QL' ); • -> NULL • mysql> SELECT CONCAT(14.3); • -> '14.3' |
INSERT(str,pos,len,newstr)
• 将str中从pos位置开始后的len个字符替换成newstr字符串(从哪个位置开始,替换多少个字符)
1
2
3
4
5
6
|
• mysql> SELECT INSERT( 'Quadratic' , 3, 4, 'What' ); # 从第三个位置开始替换4个字符 • -> 'QuWhattic' • mysql> SELECT INSERT( 'Quadratic' , -1, 4, 'What' ); #如果有负数则不替换 • -> 'Quadratic' • mysql> SELECT INSERT( 'Quadratic' , 3, 100, 'What' ); • -> 'QuWhat' |
INSTR(str,substr)
• 返回str字符串中第一个出现substr字符串的位置,如果没出现则返回为0
1
2
3
4
|
• mysql> SELECT INSTR( 'foobarbar' , 'bar' ); • -> 4 • mysql> SELECT INSTR( 'xbar' , 'foobar' ); • -> 0 |
LEFT(str,len)
• 返回str字符串中从左边开始的len个长度的字符
1
2
|
• mysql> SELECT LEFT( 'foobarbar' , 5); • -> 'fooba‘ |
LOAD_FILE(file_name)
• 读取文件且返回文件内容为字符串
LOCATE(substr,str)
• 返回str字符串中第一次出现substr字符串的位置,如果没有则返回null
1
2
3
4
|
• mysql> SELECT LOCATE( 'bar' , 'foobarbar' ); • -> 4 • mysql> SELECT LOCATE( 'xbar' , 'foobar' ); • -> 0 |
LOWER(str)
• 返回将str字符串中所有字符变换成小写后的字符串,但对二进制文本无效
1
2
3
4
5
6
7
8
9
|
• mysql> SELECT LOWER( 'QUADRATICALLY' ); • -> 'quadratically' • mysql> SET @str = BINARY 'New York' ; • mysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1)); • +-------------+-----------------------------------+ • | LOWER(@str) | LOWER(CONVERT(@str USING latin1)) | • +-------------+-----------------------------------+ • | New York | new york | +-------------+-----------------------------------+ |
LPAD(str,len,padstr)
• 将str的左边补充为padstr,直到补充成len长度的字符串并返回;如果str的长度
比len长,则返回str中最左边开始的len长度的字符
1
2
3
4
|
• mysql> SELECT LPAD( 'hi' ,4, '??' ); • -> '??hi' • mysql> SELECT LPAD( 'hi' ,1, '??' ); • -> 'h‘ |
LTRIM(str)
• 将str最左边的空格去掉并返回
1
2
|
• mysql> SELECT LTRIM( ' barbar' ); • -> 'barbar‘ |
RTRIM(str)
• 将str最右边的空格去掉并返回
REPEAT(str,count)
• 将str重复count并组合成字符串返回,如果count<1,则返回空串
1
2
|
• mysql> SELECT REPEAT( 'MySQL' , 3); • -> 'MySQLMySQLMySQL' |
REPLACE(str,from_str,to_str)
• 将所有str字符串中匹配from_str子串的地方都替换成to_str子字符串
1
2
|
• mysql> SELECT REPLACE( 'www.mysql.com' , 'w' , 'Ww' ); • -> 'WwWwWw.mysql.com‘ |
REVERSE(str)
• 将str字符串中的字符按照倒序组合并返回
1
2
|
• mysql> SELECT REVERSE( 'abc' ); • -> 'cba‘ |
RIGHT(str,len)
• 将str字符串中从右边开始的len个字符返回
1
2
|
• mysql> SELECT RIGHT( 'foobarbar' , 4); • -> 'rbar' |
RPAD(str,len,padstr)
• 将字符串str从右边开始补充为padstr直到整体长度为len,如果str的长度本身大
于len,则返回str中len长度的字符串
1
2
3
4
|
• mysql> SELECT RPAD( 'hi' ,5, '?' ); • -> 'hi???' • mysql> SELECT RPAD( 'hi' ,1, '?' ); • -> 'h‘ |
RTRIM(str)
• 将字符串str右边的空格去掉并返回
1
2
|
• mysql> SELECT RTRIM( 'barbar ' ); • -> 'barbar‘ |
SPACE(N)
• 返回N个长度的空格组成的空字符串
1
2
|
• mysql> SELECT SPACE(6); • -> ' ' |
SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM
pos FOR len)
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
• 如果没有len参数,则返回从pos位置开始的str中的子字符串;如果有len参数,则从pos
位置开始返回str中长度为len的子字符串;如果pos为负值,则代表pos从右边开始数
from 和 逗号 一样的效果
SUBSTRING_INDEX(str,delim,count)
delimit 定界
当count为正数,则返回delim出现在str字符串中第count次之前的子字符
串,如果是负数,则从右边开始计算
1
2
3
4
|
• mysql> SELECT SUBSTRING_INDEX( 'www.mysql.com' , '.' , 2); • -> 'www.mysql' • mysql> SELECT SUBSTRING_INDEX( 'www.mysql.com' , '.' , -2); • -> 'mysql.com‘ |
UPPER(str)
• 返回将str字符串中所有字符转换成大写的字符串
1
2
|
• mysql> SELECT UPPER( 'Hej' ); • -> 'HEJ‘ |
字符串对比函数
主要有LIKE , NOT LIKE ,STRCMP
LIKE
expr LIKE pat [ESCAPE ‘escape_char’]
• 通配符%
表示匹配0个或多个字符
• 通配符_
表示匹配1个字符
1
2
3
4
5
6
7
8
9
10
11
12
|
• mysql> SELECT 'David!' LIKE 'David_' ; • -> 1 #返回的结果是1 或则 0 也就是 true 或则 false • mysql> SELECT 'David!' LIKE '%D%v%' ; • -> 1 • 当匹配字符中有特殊字符时,可以用 \或者escape来指定特殊字符为字符 • mysql> SELECT 'David!' LIKE 'David\_' ; • -> 0 • mysql> SELECT 'David_' LIKE 'David\_' ; • -> 1 • mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|' ; • -> 1 |
NOT LIKE
expr NOT LIKE pat [ESCAPE ‘escape_char’]
• 是上一个字符串对比函数的反义
STRCMP
STRCMP(expr1,expr2)
• 当expr1等于expr2时等于0,当expr1小于expr2时为-1,反之为1
1
2
3
4
5
6
|
• mysql> SELECT STRCMP( 'text' , 'text2' ); • -> -1 • mysql> SELECT STRCMP( 'text2' , 'text' ); • -> 1 • mysql> SELECT STRCMP( 'text' , 'text' ); • -> 0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了