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

  

posted on   数据与人文  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示