字符串函数主要用来处理数据库中的字符串数据。mysql中的字符串函数有计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。

计算字符串字符数的函数

CHAR_LENGTH(str)函数计算字符串str所包含的字符个数。一个多字节字符算作一个单字符。

mysql> select char_length('date'), char_length('yunweijia'), char_length('运维家');
+---------------------+--------------------------+--------------------------+
| char_length('date') | char_length('yunweijia') | char_length('运维家')    |
+---------------------+--------------------------+--------------------------+
|                   4 |                        9 |                        3 |
+---------------------+--------------------------+--------------------------+
1 row in set (0.00 sec)mysql>

计算字符串长度的函数

LENGTH(str)返回值为字符串的字节长度,使用utf8编码字符集时,一个汉字是三字节,一个数字或者字母算1字节;

mysql> select length('date'), length('yunweijia'), length('运维家');
+----------------+---------------------+---------------------+
| length('date') | length('yunweijia') | length('运维家')    |
+----------------+---------------------+---------------------+
|              4 |                   9 |                   9 |
+----------------+---------------------+---------------------+
1 row in set (0.00 sec)mysql>

合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)

concat(s1,s2,...)返回结果为连接参数产生的字符串,或许有一个或多个参数。

如果有一个参数为null,则返回值为null

如果所有参数均为非二进制字符串,则结果为非二进制字符串。

如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。

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

concat_ws(x,s1,s2,...)中,x是分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。

如果分隔符是null,则结果为null。该函数会忽略任何分隔符后面的null

mysql> select concat_ws('-', 'mysql', '8.0', 'ywj'), concat_ws('@', 'one', null, 'two');
+---------------------------------------+------------------------------------+
| concat_ws('-', 'mysql', '8.0', 'ywj') | concat_ws('@', 'one', null, 'two') |
+---------------------------------------+------------------------------------+
| mysql-8.0-ywj                         | one@two                            |
+---------------------------------------+------------------------------------+
1 row in set (0.00 sec)mysql>

替换字符串的函数INSERT(s1,x,len,s2)

insert(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为null,则返回值为null

mysql> select insert('yunweijia', 2, 3, 'aaaaaaaa') as coll, insert('yunweijia', -1, 3, 'bbbbbbbb') as coll2, insert('yunweijia', 2, 99, 'ccccccccc') as coll3;
+----------------+-----------+------------+
| coll           | coll2     | coll3      |
+----------------+-----------+------------+
| yaaaaaaaaeijia | yunweijia | yccccccccc |
+----------------+-----------+------------+
1 row in set (0.00 sec)mysql>

第一个函数insert('yunweijia', 2, 3, 'aaaaaaaa')yunweijia第二个字符开始长度为3的字符串,替换成aaaaaaaa

第二个函数insert('yunweijia', -1, 3, 'bbbbbbbb')中由于-1超出了字符串长度,直接返回了原字符串;

第三个函数insert('yunweijia', 2, 99, 'ccccccccc')中由于替换长度99,超出了字符串原本长度,所以从第二个字符开始,截取后面所有的字符,并替换为指定字符ccccccccc

字母大小写转换函数

大写转小写

lower(str)或者lcase(str)可以将字符串str中的字母字符全部转换成小写字母。

mysql> select lower('YUNweiJIA'), lcase('YUNweiJIA');
+--------------------+--------------------+
| lower('YUNweiJIA') | lcase('YUNweiJIA') |
+--------------------+--------------------+
| yunweijia          | yunweijia          |
+--------------------+--------------------+
1 row in set (0.00 sec)mysql>

小写转大写

upper(str)或者ucase(str)可以将字符串str中的字母字符全部转换成大写字母。

mysql> select upper('yunWEIjia'), ucase('yunWEIjia');
+--------------------+--------------------+
| upper('yunWEIjia') | ucase('yunWEIjia') |
+--------------------+--------------------+
| YUNWEIJIA          | YUNWEIJIA          |
+--------------------+--------------------+
1 row in set (0.00 sec)mysql>

获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

left(s,n)返回字符串s开始的最左边的n个字符。

mysql> select left('yunweijia', 5);
+----------------------+
| left('yunweijia', 5) |
+----------------------+
| yunwe                |
+----------------------+
1 row in set (0.00 sec)mysql>

right(s,n)返回字符串s开始的最右边的n个字符。

mysql> select right('yunweijia', 5);
+-----------------------+
| right('yunweijia', 5) |
+-----------------------+
| eijia                 |
+-----------------------+
1 row in set (0.00 sec)mysql>

填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)

lpad(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符

mysql> select lpad('yunweijia', 4, '@#'), lpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| lpad('yunweijia', 4, '@#') | lpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw                       | @#@#@#@#@#@yunweijia        |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)mysql>

由于字符串yunweijia长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。

RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。假如字符串s1的长度大于len,则返回值被缩短到len字符长度。

mysql> select rpad('yunweijia', 4, '@#'), rpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| rpad('yunweijia', 4, '@#') | rpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw                       | yunweijia@#@#@#@#@#@        |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)mysql>

由于字符串yunweijia长度大于4,所以不仅不需要填充,反而需要截取至从左开始4位字符的字符串。

删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)

ltrim(s)返回字符串s,字符串左侧空格字符被删除;

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

rtrim(s)返回字符串s,字符串右侧空格字符被删除;

mysql> select '(  yunweijia  )', concat( '(', rtrim('  yunweijia  '), ')' );
+-----------------+--------------------------------------------+
| (  yunweijia  ) | concat( '(', rtrim('  yunweijia  '), ')' ) |
+-----------------+--------------------------------------------+
| (  yunweijia  ) | (  yunweijia)                              |
+-----------------+--------------------------------------------+
1 row in set (0.00 sec)mysql>

trim(s)删除字符串s两侧的空格;

mysql> select '(  yunweijia  )', concat( '(', trim('  yunweijia  '), ')' );
+-----------------+-------------------------------------------+
| (  yunweijia  ) | concat( '(', trim('  yunweijia  '), ')' ) |
+-----------------+-------------------------------------------+
| (  yunweijia  ) | (yunweijia)                               |
+-----------------+-------------------------------------------+
1 row in set (0.00 sec)mysql>

删除指定字符串的函数TRIM(s1 FROM s)

trim(s1 from s)删除字符串s中两端所有的子字符串s1s1为可选项,在未指定情况下,删除空格。

mysql> select trim('@#' from '@#@#yunwei@#jia@#@#');
+---------------------------------------+
| trim('@#' from '@#@#yunwei@#jia@#@#') |
+---------------------------------------+
| yunwei@#jia                           |
+---------------------------------------+
1 row in set (0.00 sec)mysql>

可以看到,只删除指定字符串两边的内容,中间的内容并不会进行删除。

重复生成字符串的函数REPEAT(s.n)

repeat(s,n)返回一个由重复字符串s组成的字符串,字符串s的数量等于n

如果n<=0,则返回一个空字符串;

如果s或者nnull,则返回null

mysql> select repeat('x', 10), repeat('x', 0), repeat('x', null);
+-----------------+----------------+-------------------+
| repeat('x', 10) | repeat('x', 0) | repeat('x', null) |
+-----------------+----------------+-------------------+
| xxxxxxxxxx      |                | NULL              |
+-----------------+----------------+-------------------+
1 row in set (0.00 sec)mysql>

空格函数SPACE(n)

space(n)返回一个由n个空格组成的字符串。

mysql> select concat('(', space(10), ')');
+-----------------------------+
| concat('(', space(10), ')') |
+-----------------------------+
| (          )                |
+-----------------------------+
1 row in set (0.00 sec)mysql>

替换函数REPLACE(s,s1,s2)

replace(s,s1,s2)使用字符串s2替代字符串s中所有的字符串s1

mysql> select replace('yunweijia', 'i', '@#');
+---------------------------------+
| replace('yunweijia', 'i', '@#') |
+---------------------------------+
| yunwe@#j@#a                     |
+---------------------------------+
1 row in set (0.00 sec)mysql>

比较字符串大小的函数strcmp(s1,s2)

strcmp(s1,s2):若所有的字符串均相同,则返回0;

若根据当前分类次序,第一个参数小于第二个,则返回-1;

其他情况返回1。

mysql> select strcmp('txt', 'txt'), strcmp('txt', 'txt2'), strcmp('txt2', 'txt');
+----------------------+-----------------------+-----------------------+
| strcmp('txt', 'txt') | strcmp('txt', 'txt2') | strcmp('txt2', 'txt') |
+----------------------+-----------------------+-----------------------+
|                    0 |                    -1 |                     1 |
+----------------------+-----------------------+-----------------------+
1 row in set (0.00 sec)mysql>

获取子串的函数SUBSTRING(s,b,len)和MID(s,n,len)

substring(s,n,len)带有len参数的格式,从字符串s返回一个长度与len字符相同的子字符串,起始于位置n

也可能对n使用一个负值。假如这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。

mysql> select substring('yunweijia', 5, 2) as coll, substring('yunweijia', -3) as coll1, substring('yunweijia', 3) as coss2;
+------+-------+---------+
| coll | coll1 | coss2   |
+------+-------+---------+
| ei   | jia   | nweijia |
+------+-------+---------+
1 row in set (0.00 sec)mysql>

匹配子串开始位置的函数

locate(str1,str)position(str1 in str)instr(str, str11)三个函数的作用相同,返回子字符串str1在字符串str中的开始位置。

mysql> select locate('wei', 'yunweijia'), position('wei' in 'yunweijia'), instr('yunweijia', 'wei');
+----------------------------+--------------------------------+---------------------------+
| locate('wei', 'yunweijia') | position('wei' in 'yunweijia') | instr('yunweijia', 'wei') |
+----------------------------+--------------------------------+---------------------------+
|                          4 |                              4 |                         4 |
+----------------------------+--------------------------------+---------------------------+
1 row in set (0.00 sec)mysql>

字符串逆序的函数REVERSE(s)

reverse(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。

mysql> select reverse('yunweijia') as coll, reverse('123456789') as coll1;
+-----------+-----------+
| coll      | coll1     |
+-----------+-----------+
| aijiewnuy | 987654321 |
+-----------+-----------+
1 row in set (0.00 sec)mysql>

返回指定位置的字符串的函数

elt(n, str1, str2,...,strn):如果n=1,则返回值为第一个字符串str1

如果n=2,则返回值为第二个字符串str2;以此类推。

如果n<1或者大于参数的数目,则返回值为null

mysql> select elt(1, 'ni1', 'wo1', 'ta') as coll, elt(3, 'ni1', 'wo1', 'ta') as coll_1, elt(0, 'ni1', 'wo1', 'ta') as coll_2, elt(4, 'ni1', 'wo1', 'ta') as coll_3;
+------+--------+--------+--------+
| coll | coll_1 | coll_2 | coll_3 |
+------+--------+--------+--------+
| ni1  | ta     | NULL   | NULL   |
+------+--------+--------+--------+
1 row in set (0.00 sec)mysql>

返回指定字符串位置的函数FIELD(s,s1,s2,…,sn)

field(s,s1,s2,...,sn)返回字符串s在列表s1,s2,...,sn中第一次出现的位置,如果找不到s,则直接返回0。

如果snull,则返回时是0。

mysql> select field('w', 'yun', 'yunwei', 'w', 'yunweijia') as coll, field('x', 'yun', 'yunwei', 'w', 'yunweijia') as coll_1, field(null, 'yun', 'yunwei', 'w', 'yunweijia') as coll_2;
+------+--------+--------+
| coll | coll_1 | coll_2 |
+------+--------+--------+
|    3 |      0 |      0 |
+------+--------+--------+
1 row in set (0.00 sec)mysql>

返回子串位置的函数FIND_IN_SET(s1,s2)

find_in_set(s1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个有多个逗号分开的字符串组成的列表。

如果s1不在s2s2为空字符串,则返回值为0;

如果任意一个参数为null,则返回值为null

mysql> select find_in_set('X', 'yun,xwei,Xwei,X,jia');
+-----------------------------------------+
| find_in_set('X', 'yun,xwei,Xwei,X,jia') |
+-----------------------------------------+
|                                       4 |
+-----------------------------------------+
1 row in set (0.00 sec)mysql>

选取字符串的函数MAKE_SET(x,s1,s2,…,sn)

make_set(x,s1,s2,...,sn)函数按x的二进制数从s1,s2,...,sn中选取字符串。

mysql> select make_set(5, 'a', 'b', 'c', 'd') as coll, make_set(1|4, 'a', 'b', 'c', 'd') as coll_1, make_set(1|4, 'a', 'b', null, 'c', 'd') as coll_2, make_set(0, 'a', 'b', 'c', 'd') as coll_3;
+------+--------+--------+--------+
| coll | coll_1 | coll_2 | coll_3 |
+------+--------+--------+--------+
| a,c  | a,c    | a      |        |
+------+--------+--------+--------+
1 row in set (0.00 sec)mysql>

5的二进制是0101,从右往左的第1位和第3位是1,所以选取a、c;

1的二进制是1,4的二进制是100,进行或操作之后的二进制是101,从右往左的第1位和第3位是1,所以选取a、c;

由于null不参与计算,所以不会添加到结果中,所以coll_2只有a

至此,本文结束。

更多内容请转至VX公众号 “运维家” ,获取最新文章。

------ “运维家” ------

------ “运维家” ------

------ “运维家” ------

linux中断异常,linuxuml建模,linux编译多个源文件,linux怎么更新时间,linux中的分页视频教程,
linux怎么解压gzip,linux解压某个目录,怎么关闭linux网关,linux文件架构图,linux提高权限执行,
linux文件用什么标志,网络安全linux加固,linux中查看邮件,linux修改背景颜色,linux环境下搭建网站。

mysql函数汇总之字符串函数相关推荐

  1. python字符串处理函数汇总_python字符串函数总结

    #startswith(),检查字符串是否是以指定字符串开头,是,返回True,否则,返回False#可以加指定起始结束位置, str2 = "this is a test for a li ...

  2. 【Kotlin】字符串操作 ① ( 截取字符串函数 substring | 拆分字符串函数 split | 解构语法特性 )

    文章目录 一.截取字符串函数 substring 二.拆分字符串函数 split 一.截取字符串函数 substring Kotlin 中提供了 截取字符串函数 substring , 可接收 Int ...

  3. 分割成数组php字符串函数,PHP 分割字符串函数把字符串分割成数组示例

    这篇文章主要为大家详细介绍了PHP 分割字符串函数把字符串分割成数组示例,具有一定的参考价值,可以用来参考一下. 对PHP分割字符串函数把字符串分割成数组感兴趣的小伙伴,下面一起跟随512笔记的小编两 ...

  4. mysql自定义函数应用_mysql functions实例:在自定义函数中应用字符串函数

    分享一段mysql自定义函数的代码,在其中用到了mysql的字符串函数length. 代码: mysql> delimiter $$ mysql> CREATE FUNCTION myFu ...

  5. startindex 不能大于字符串长度_「12」学习MySQL第二类函数:字符串函数

    前一篇文章总结了下MySQL中常用的数学函数,本文接下来的重点就是认识"字符串函数". 上图这匹漂亮的马儿就是通过各种字符(字母.括号.逗号.竖线等)画出来的.我不由自主地会去想下 ...

  6. MySQL 十大常用字符串函数

    作者 | 不剪发的Tony老师       责编 | 欧阳姝黎 出品 | CSDN博客 数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值.MySQL 为我们提供了许多用 ...

  7. 盘点mysql中的那些函数-----数学与字符串函数(8.31更新)

    盘点mysql中的那些函数 数学函数 平方根与取余 最小整数与最大整数 随机函数---rand 四舍五入函数----round 符号函数 幂运算函数 对数函数 角度和弧度函数 三角函数 字符串函数 字 ...

  8. strchr strstr函数php,PHP字符串函数之 strstr stristr strchr strrchr

    strstr -- 查找字符串的首次出现,返回字符串从第一次出现的位置开始到该字符串的结尾或开始. stristr -- strstr 函数的忽略大小写版本 strchr -- strstr 函数的别 ...

  9. 常见的php 字符串函数,php 常用字符串函数总结

    1.格式化输出 chop 是rtrim()的别名: ltrim() trim() nl2br()将\n转换成 print,echo,printf(),sprintf(): echo()不是函数,pri ...

最新文章

  1. EEGNet: 神经网络应用于脑电信号
  2. 2018-12-10
  3. win7配置远程连接oracle数据库吗,win7环境下配置oracle数据库的方法有哪些?
  4. 城市公交网建设问题(信息学奥赛一本通-T1348)
  5. Hadoop(二)搭建Hadoop集群
  6. 【bzoj 十连测】[noip2016十连测第三场]Problem C: 序列(静态主席树)
  7. 男人如何在不经常锻炼的情况下,慢慢消除大肚皮,恢复好身材?
  8. javascript forEach方法
  9. win2008支持mysql asp.net_Win7、win2008中让IIS7支持asp的方法
  10. python发音-Python如何实现文本转语音
  11. unity中连接MySQL数据库的方法封装
  12. python是个什么东西刷爆朋友圈_几十行代码让你知道朋友圈都是什么样的朋友
  13. (转载)李开复:我在硅谷看到的最前沿科技趋势
  14. JBoss下载与JBoss安装
  15. 【前端框架】当前基于bootstrap框架的几种主流前端框架
  16. [翻译]机器学习如何个性化推荐音乐
  17. MACBOOK快捷键输入
  18. 学计算机进中央电视台,厉害了,我们的计算机!
  19. 我的股票交易成长经历
  20. SDNU1026 田忌赛马续

热门文章

  1. centos安装git(centos安装vmware tools)
  2. Centos8.3 nfs-ganesha使用ceph后端
  3. 644 · 镜像数字
  4. 开发日志:浏览器宽度大于400px,td的宽度按百分比自适应,小于400px时,宽度为指定的值
  5. linux pci/pcie驱动
  6. 欧文分校的计算机科学博士,加州大学欧文分校计算机科学硕士排名第37(2020年TFE Times排名)...
  7. PostgreSQL学习手册
  8. Red5 Client 调用 Red5 Server
  9. 集合之ArrayDeque
  10. 2017.2.16 开涛shiro教程-第十七章-OAuth2集成(一)服务器端