MySql常用函数之字符函数

MySql常用函数之字符函数

这两天我一个朋友去面试,面试聊到MySql这一章节的时候就有问到MySql的常用函数,本来挺容易的,这玩意平时多多少少怎么会都会用到,至少也有点印象实在是想不起来也可以百度,找文档呀,找资料来解决,所以就每太上心,结果面试的时候给人家问懵了,哎!面试结果可想而知了.所以准备记录一期MySql的基本函数.

函数分类:

MySql的函数可以根据它的用法大概的分为两大类1.单行函数 2.分组函数
顾名思义这两货一个主要处理单行操作,一个主要处理分组操作的,这篇主要给各位讲一下单行函数里的字符函数.

常用的字符函数

1.length 主要总用是获取参数集的字节个数(注意是字节不是字符)

语法: length(str)
案例:

	select length('张三');

在这里插入图片描述
可以看到它的查询结果是6,不是2,这里足以说明它获取的是字符串的字节长度而不是字符长度.

2.concat 拼接字符串

语法: concat(str1,str2…)
案例:

select concat('张三','投了隔壁','李四','的黄瓜') ;

输出结果:
在这里插入图片描述

3.upper,lower 大小写转换 upper大写 lower小写

语法: upper(str) lower(str)
案例:

select upper('abCd') , lower('ABcd');

输出结果:
在这里插入图片描述

4. substr,substring 截取字符串 其实substr就是substring的简写

他有四个重载函数,而且要注意的是Mysql的索引是从1开始的

  1. substr(str,index) 从制定的索引开始截取字符串
  2. substr(str from index) 从制定的索引开始截取字符串 这两个是一样的
    案例:
select substr('123456',3) , substr('123456' from 3)

输出结果:
在这里插入图片描述

  1. substr(str from index length)
  2. substr(str , index , length) 这两个是一样的,都是从指定的索引开始并截取指定长度的字符
    案例:
select substr('123456' from 3 for 2) , substr('123456',3,2)

输出结果:
在这里插入图片描述

5. instr 返回字符串子串第一次出现的索引,如果找不到则返回0

语法: instr(str,son)
案例:

select instr('123456','23')

输出结果:
在这里插入图片描述

6. trim 去除前后指定字符串

语法: 1. 一个参数 trim(str) 默认去除前后空格
案例:

select trim(' 123456 ') ,length(trim(' 123456 ')),length(' 123456 ')

输出结果:
在这里插入图片描述

2.两个参数trim(rm from str) 去除指定的字符串
案例:

select trim('a' from 'aaaaa123456aaaaa')

输出结果:
在这里插入图片描述
这种的还以一种情况,可以去除多个字符:
案例:

select trim('aa' from 'aaaaa123456aaaaa')

输出结果:
在这里插入图片描述
可以看得到这个它会以aa为一个单位去除

7. lpad 如果字符串不满足指定长度,那么用指定字符串向左填充直到满足指定长度,如果字符串超过指定长度,则从右边开始截取直到满足指定长度,

**语法: load(str ,len , padstr) **
案例1:

select lpad('12345',10,'*')

输出结果:
在这里插入图片描述
案例2:

select lpad('123456',5,'*')

输出结果:
在这里插入图片描述
可以看到当字符串超过指定长度是向右边截取直到满足长度;

8. rpad 如果字符串不满足指定长度,那么用指定字符串向右填充直到满足指定长度,如果字符串超过指定长度,则从右边开始截取直到满足指定长度

**语法: road(str ,len , padstr) **
案例1:

select rpad('12345',10,'*')

输出结果:
在这里插入图片描述
案例2:

select rpad('123456',5,'*')

输出结果:
在这里插入图片描述

可以看到当字符串超过指定长度是向右边截取直到满足长度;

9. replace 替换 将字符串中出现的字符串替换成指定字符串

语法: replace(str,src,replace)
案例:

select replace('123456','12','23')

输出结果:
在这里插入图片描述

MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql> select concat('11','22','33'); +------------------------+ | concat('11','22','33') | +------------------------+ | 112233 | +------------------------+ 1 row in set (0.00 sec) MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL mysql> select concat('11','22',null); +------------------------+ | concat('11','22',null) | +------------------------+ | NULL | +------------------------+ 1 row in set (0.00 sec) MySQL中concat_ws函数 使用方法: CONCAT_WS(separator,str1,str2,...) CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。 注意: 如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。 如连接后以逗号分隔 mysql> select concat_ws(',','11','22','33'); +-------------------------------+ | concat_ws(',','11','22','33') | +-------------------------------+ | 11,22,33 | +-------------------------------+ 1 row in set (0.00 sec) 和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL mysql> select concat_ws(',','11','22',NULL); +-------------------------------+ | concat_ws(',','11','22',NULL) | +-------------------------------+ | 11,22 | +-------------------------------+ 1 row in set (0.00 sec) MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔(默认) mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,分号分隔 mysql> select id,group_concat(name separator ';') from aa group by id; +------+----------------------------------+ | id| group_concat(name separator ';') | +------+----------------------------------+ |1 | 10;20;20 | |2 | 20| |3 | 200;500 | +------+----------------------------------+ 3 rows in set (0.00 sec) 以id分组,把去冗余的name字段的值打印在一行, 逗号分隔 mysql> select id,group_concat(distinct name) from aa group by id; +------+-----------------------------+ | id| group_concat(distinct name) | +------+-----------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec) 以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序 mysql> select id,group_concat(name order by name desc) from aa group by id; +------+---------------------------------------+ | id| group_concat(name order by name desc) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec) repeat()函数 用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数 mysql> select repeat('ab',2); +----------------+ | repeat('ab',2) | +----------------+ | abab | +----------------+ 1 row in set (0.00 sec) 又如 mysql> select repeat('a',2); +---------------+ | repeat('a',2) | +---------------+ | aa | +---------------+ 1 row in set (0.00 sec) mysql向表中某字段后追加一段字符串: update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串 update table_name set field=CONCAT('str',field) 这个函数对你也许会有很大帮助哦!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值