前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql字符串处理函数

mysql字符串处理函数

作者头像
AsiaYe
发布2019-11-06 16:33:35
1.5K0
发布2019-11-06 16:33:35
举报
文章被收录于专栏:DBA随笔DBA随笔
mysql字符串处理函数
字符串处理函数示例
在日常运维的过程中,经常需要写一些脚本来进行一些数据记录处理的操作,例如一个记录中的列,有的是4个(包含空列),有的是5个,这种情况下,需要对其中的某些列值进行处理,在这些脚本中,常常会用到很多关于字符串的函数,今天把这些字符串处理函数简单整理下,后续如果想实现一些脚本,可以直接拿来用。

1.获取字符串字符数和字符串长度的函数

首先弄清楚两个概念,字符串字符数和字符串长度,字符数是指字符串所包含的的字符个数,字符串长度指的是包含的字节个数。char_length是统计字符数的函数,而length是统计字符串长度的函数,下面来看实例:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select char_length('egg'),char_length('鸡蛋');
+--------------------+-----------------------+
| char_length('egg') | char_length('鸡蛋')   |
+--------------------+-----------------------+
|                  3 |                     2 |
+--------------------+-----------------------+
1 row in set (0.05 sec)

root@localhost:3306 [(none)]>select length('egg'),length('鸡蛋');
+---------------+------------------+
| length('egg') | length('鸡蛋')   |
+---------------+------------------+
|             3 |                6 |
+---------------+------------------+
1 row in set (0.00 sec)

可以看到,'鸡蛋'两个字的所占的字符数是2,字节数是6,这是因为汉字在mysql中使用utf8来表示,一个字符包含3个字节,所以结果就是3*2=6

2.合并字符串函数concat和concat_ws

concat函数返回连接参数产生的字符串,可以是两个,可以是多个,如果其中有一个为null,那么返回结果是null:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select concat('MySQL','5.7'),concat('MySQL',null,'5.7');
+-----------------------+----------------------------+
| concat('MySQL','5.7') | concat('MySQL',null,'5.7') |
+-----------------------+----------------------------+
| MySQL5.7              | NULL                       |
+-----------------------+----------------------------+
1 row in set (0.05 sec)

concat_ws函数接受一个分隔符,其他的用法和concat一致,直接来看例子:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select concat_ws('-','MySQL','5.7'),concat_ws('*','MySQL',null,'5.7');
+------------------------------+-----------------------------------+
| concat_ws('-','MySQL','5.7') | concat_ws('*','MySQL',null,'5.7') |
+------------------------------+-----------------------------------+
| MySQL-5.7                    | MySQL*5.7                         |
+------------------------------+-----------------------------------+
1 row in set (0.00 sec)

需要注意的一点是,如果中间遇到null值,那么会直接进行忽略。

3.insert替换字符串函数

insert函数的使用方法为insert(str1,x,len,str2)

也就是使用str2带替换str1中的第x个字符开始后面的len个字符,话不多说,看例子:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select insert('hello',2,4,'haha'),insert('hello',-1
,4,'haha'),insert('hello',2,10,'haha'),insert('hello',2,3,'haha')\G
*************************** 1. row ***************************
 insert('hello',2,4,'haha'): hhaha
insert('hello',-1,4,'haha'): hello
insert('hello',2,10,'haha'): hhaha
 insert('hello',2,3,'haha'): hhahao
1 row in set (0.00 sec)

上面的例子中,第一个替换的是从第2个字符开始,用4个字符替换hello中的四个字符;第二个是当起始位置变为-1的时候,超越了下标范围,则直接保持hello字符串不变;第三个替换的是从第二个开始,连续10个字符,后面的len越界,字符串只替换到实际中最后一个位置;最后一个替换中间的3个字符,所以总长度增加了1.

4字母大小写转换函数

这个比较好理解,直接看例子:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select lower('HELLO'),lcase('Hello'),upper('hello')
,ucase('HeLlo')\G
*************************** 1. row ***************************
lower('HELLO'): hello
lcase('Hello'): hello
upper('hello'): HELLO
ucase('HeLlo'): HELLO
1 row in set (0.03 sec)

5.截取指定长度的字符串

分别是left函数和right函数,这两个函数也比较好理解,直接上例子:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select left('helloworld',5),right('helloworld',5);
+----------------------+-----------------------+
| left('helloworld',5) | right('helloworld',5) |
+----------------------+-----------------------+
| hello                | world                 |
+----------------------+-----------------------+
1 row in set (0.00 sec)

6.填充字符串的函数LPAD和RPAD

LPAD(s1,len,s2)这个函数是使用s2字符串把s1左侧的字符填充到len长度。

RPAD(s1,len,s2)这个函数是使用s2字符串把s1右侧的字符填充到len长度。

代码语言:javascript
复制
root@localhost:3306 [(none)]>select lpad('hello',4,'?'),lpad('hello',8,'?') ;
+---------------------+---------------------+
| lpad('hello',4,'?') | lpad('hello',8,'?') |
+---------------------+---------------------+
| hell                | ???hello            |
+---------------------+---------------------+
1 row in set (0.04 sec)


root@localhost:3306 [(none)]>select rpad('hello',4,'?'),rpad('hello',8,'?');
+---------------------+---------------------+
| rpad('hello',4,'?') | rpad('hello',8,'?') |
+---------------------+---------------------+
| hell                | hello???            |
+---------------------+---------------------+
1 row in set (0.00 sec)

需要注意的是,如果字符串的长度大于中间的len的时候,字符串会被截断到len值。

7.删除空格的函数LTRIM,RTRIM和TRIM

Ltrim是删除左侧的空格,Rtrim是删除右侧空格,trim是删除两侧的空格,示例如下:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select '(  book  )',concat('(',ltrim('  book  '),')
'),concat('(',rtrim('  book  '),')'),concat('(',trim('  book  '),')')\G
*************************** 1. row ***************************
                       (  book  ): (  book  )
concat('(',ltrim('  book  '),')'): (book  )
concat('(',rtrim('  book  '),')'): (  book)
 concat('(',trim('  book  '),')'): (book)
1 row in set (0.00 sec)

8.删除指定字符串的函数trim(s1 from s2)

看看实例:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select trim('world' from 'helloworld' );
+----------------------------------+
| trim('world' from 'helloworld' ) |
+----------------------------------+
| hello                            |
+----------------------------------+
1 row in set (0.00 sec)

9.重复生成字符串的函数repeat

这个比较好理解,直接看例子:

代码语言:javascript
复制
root@localhost:3306 [(none)]>select repeat('mysql',3) ;
+-------------------+
| repeat('mysql',3) |
+-------------------+
| mysqlmysqlmysql   |
+-------------------+
1 row in set (0.00 sec)

还有一部分,明天接着写吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档