MySQL常见字符函数简介

函数名用途简介
bin()返回数字的二进制表示
bit_length()返回字符的字长度,bit
char_length()返回字符个数
concat()字符连接函数
concat_ws()字符连接函数,可以指定分割符,concat的变种
hex()返回十六进制表示
insert()在字符串指定位置插入内容
left()返回字符串左侧指定的部分
length()返回字符串字节长度
locate()定位字符位置
lower()将字符转换为小写,对二进制字符串无效
lpad()在字符串左侧填充指定字符至指定长度
ltrim()移除左侧开头的空格
repeat()将字符串重复指定次数
replace()将字符替换为指定内容
reverse()将字符串反转
right()返回字符串右侧指定的部分,类似left()
rpad()在字符串右侧填充指定字符至指定长度,类似lpad
rtrim()移除字符串右侧空格
space()返回字符串的空格数量
strcmp()比较两个字符串大小,相等返回0,第一个参数较小返回-1,第一个参数较大返回1
subtring()返回指定的子串
trim()移除字符串前后空格
index_substring按照分隔符返回指定部分

1.bin()

mysql> select bin(12);
+---------+
| bin(12) |
+---------+
| 1100    |
+---------+
1 row in set (0.00 sec)

2.bit_length

mysql> select bit_length('星');
+-------------------+
| bit_length('星')  |
+-------------------+
|                24 |
+-------------------+
1 row in set (0.00 sec)

3.char_length

mysql> select char_length('MySQL');
+----------------------+
| char_length('MySQL') |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.00 sec)

4.concat
语法:CONCAT(str1,str2,…)
用法:将需要连接的字符用逗号隔开,如果存在null,则返回null。

mysql> select concat('MySQL',' ','is a relational database');
+------------------------------------------------+
| concat('MySQL',' ','is a relational database') |
+------------------------------------------------+
| MySQL is a relational database                 |
+------------------------------------------------+
1 row in set (0.00 sec)

mysql> select concat('MySQL',null);
+----------------------+
| concat('MySQL',null) |
+----------------------+
| NULL                 |
+----------------------+
1 row in set (0.00 sec)

5.concat_ws
语法:CONCAT_WS(separator,str1,str2,…)
用法:concat的变种,separator指定间隔符号,会跳过null。

mysql> select concat_ws(',','MySQL','relational database');
+----------------------------------------------+
| concat_ws(',','MySQL','relational database') |
+----------------------------------------------+
| MySQL,relational database                    |
+----------------------------------------------+
1 row in set (0.00 sec)

mysql> select concat_ws(',','MySQL',null,'relational database');  
+---------------------------------------------------+
| concat_ws(',','MySQL',null,'relational database') |
+---------------------------------------------------+
| MySQL,relational database                         |
+---------------------------------------------------+
1 row in set (0.00 sec)

6.insert()
语法:INSERT(str,pos,len,newstr)
用法:对于str字符串,从pos到len的位置,用newstr来替代。如果pos不在str长度范围,则不进行替换;如果len超过str从pos起的剩余长度,则从pos往后的所有部分都替换为newstr;如果任何参数是null,则返回null。

mysql> select insert('MySQL',2,2,'sam'); 
+---------------------------+
| insert('MySQL',2,2,'sam') |
+---------------------------+
| MsamQL                    |
+---------------------------+
1 row in set (0.00 sec)

mysql> select insert('MySQL',-1,2,'sam');
+----------------------------+
| insert('MySQL',-1,2,'sam') |
+----------------------------+
| MySQL                      |
+----------------------------+
1 row in set (0.00 sec)

mysql> select insert('MySQL',-1,null,'sam'); 
+-------------------------------+
| insert('MySQL',-1,null,'sam') |
+-------------------------------+
| NULL                          |
+-------------------------------+
1 row in set (0.00 sec)

7.left()
语法:LEFT(str,len)
用法:返回str左右len长度的部分。

mysql> select left('MySQL',2);
+-----------------+
| left('MySQL',2) |
+-----------------+
| My              |
+-----------------+
1 row in set (0.00 sec)

mysql> select left('MySQL',null);
+--------------------+
| left('MySQL',null) |
+--------------------+
| NULL               |
+--------------------+
1 row in set (0.00 sec)

8.length()

mysql> select length('MySQL');
+-----------------+
| length('MySQL') |
+-----------------+
|               5 |
+-----------------+
1 row in set (0.00 sec)

mysql> select length('星');
+---------------+
| length('星')  |
+---------------+
|             3 |
+---------------+
1 row in set (0.00 sec)

9.locate()
语法:LOCATE(substr,str), LOCATE(substr,str,pos)
用法:第一个返回substr在str第一次出现的位置,第二个返回str从pos开始,substr第一次出现的位置。如果substr不存在str中,则返回0;如果任何参数是null,则返回null。

mysql> select locate('SQL','MySQLSQL');     
+--------------------------+
| locate('SQL','MySQLSQL') |
+--------------------------+
|                        3 |
+--------------------------+
1 row in set (0.00 sec)

mysql> select locate('SQL','MySQLSQL',5);
+----------------------------+
| locate('SQL','MySQLSQL',5) |
+----------------------------+
|                          6 |
+----------------------------+
1 row in set (0.00 sec)

10.lower()
用法:将字符串转换为小写,需要注意对二进制字符串无效。

mysql> select lower('MySQL');
+----------------+
| lower('MySQL') |
+----------------+
| mysql          |
+----------------+
1 row in set (0.00 sec)

mysql> set @str=binary 'MySQL';
Query OK, 0 rows affected (0.00 sec)

mysql> select lower(@str),lower(convert(@str using utf8mb3));
+-------------+------------------------------------+
| lower(@str) | lower(convert(@str using utf8mb3)) |
+-------------+------------------------------------+
| MySQL       | mysql                              |
+-------------+------------------------------------+
1 row in set (0.00 sec)

11.lpad()
语法:LPAD(str,len,padstr)
用法:在str左侧填充padstr至len长度,如果len小于str长度,则将str截断至len长度并返回。

mysql> select lpad('MySQL',7,'a');
+---------------------+
| lpad('MySQL',7,'a') |
+---------------------+
| aaMySQL             |
+---------------------+
1 row in set (0.00 sec)

mysql> select lpad('MySQL',2,'a');
+---------------------+
| lpad('MySQL',2,'a') |
+---------------------+
| My                  |
+---------------------+
1 row in set (0.00 sec)

12.ltrim()

mysql> select ltrim('  MySQL');
+------------------+
| ltrim('  MySQL') |
+------------------+
| MySQL            |
+------------------+
1 row in set (0.00 sec)

13.repeat()

mysql> select repeat('MySQL',2);
+-------------------+
| repeat('MySQL',2) |
+-------------------+
| MySQLMySQL        |
+-------------------+
1 row in set (0.00 sec)

mysql> select repeat('MySQL',0);
+-------------------+
| repeat('MySQL',0) |
+-------------------+
|                   |
+-------------------+
1 row in set (0.00 sec)

14.repeat()
语法:REPLACE(str,from_str,to_str)
此函数区分大小写。

mysql> select replace('MySQL','M','m');
+--------------------------+
| replace('MySQL','M','m') |
+--------------------------+
| mySQL                    |
+--------------------------+
1 row in set (0.00 sec)

15.substring()
语法:SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
用法:第一个从pos位置开始提取str的子串,第二个跟第一个相同,第三个从pos开始从str提取长度为len的子串,第四个跟第三个相同。

mysql> select substring('MySQL',2);
+----------------------+
| substring('MySQL',2) |
+----------------------+
| ySQL                 |
+----------------------+
1 row in set (0.00 sec)

mysql> select substring('MySQL',2,2);
+------------------------+
| substring('MySQL',2,2) |
+------------------------+
| yS                     |
+------------------------+
1 row in set (0.00 sec)

mysql> select substring('MySQL',-2,2);
+-------------------------+
| substring('MySQL',-2,2) |
+-------------------------+
| QL                      |
+-------------------------+
1 row in set (0.00 sec)

16.trim()
语法:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM]
str)
用法:both指字符串两端,leading指字符串左侧,trailing指字符串右侧。

mysql> select trim(leading 'c' from 'cbabc');      
+--------------------------------+
| trim(leading 'c' from 'cbabc') |
+--------------------------------+
| babc                           |
+--------------------------------+
1 row in set (0.00 sec)

mysql> select trim(trailing 'c' from 'cbabc');       
+---------------------------------+
| trim(trailing 'c' from 'cbabc') |
+---------------------------------+
| cbab                            |
+---------------------------------+
1 row in set (0.00 sec)

mysql> select trim(both 'c' from 'cbabc');        
+-----------------------------+
| trim(both 'c' from 'cbabc') |
+-----------------------------+
| bab                         |
+-----------------------------+
1 row in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值