专栏首页DBA随笔mysql字符串处理函数(二)

mysql字符串处理函数(二)

mysql字符串处理函数(二)
字符串处理函数示例
昨天讲了字符串处理函数中的一部分,今天将剩余的一部分再写一下。

1.空格函数space和替换函数replace函数

space函数返回由空格组成的字符串。

replace函数使用方法是replace(s,s1,s2),使用字符串s2替换字符串s中所有的s1。

这里看下例子:

root@localhost:3306 [(none)]>select concat('(',space(6),')');
+--------------------------+
| concat('(',space(6),')') |
+--------------------------+
| (      )                 |
+--------------------------+
1 row in set (0.00 sec)

root@localhost:3306 [(none)]>select replace('xxx.mysql.com','x','w');
+----------------------------------+
| replace('xxx.mysql.com','x','w') |
+----------------------------------+
| www.mysql.com                    |
+----------------------------------+
1 row in set (0.04 sec)

2.比较字符串函数strcmp

strcmp函数的使用方法strcmp(s1,s2)

如果s1和s2相等则返回0,如果s1小于s2,则返回-1,其他情况返回1。

root@localhost:3306 [(none)]>select strcmp('txt','txt2'),strcmp('txt2','txt'),st
rcmp('txt','txt');
+----------------------+----------------------+---------------------+
| strcmp('txt','txt2') | strcmp('txt2','txt') | strcmp('txt','txt') |
+----------------------+----------------------+---------------------+
|                   -1 |                    1 |                   0 |
+----------------------+----------------------+---------------------+
1 row in set (0.06 sec)

3.获取子串的函数substring(s,n,len)

substring(s,n,len)的用法是从字符串s中第n个字符开始,截取len个字符长度作为子串,如下:

root@localhost:3306 [(none)]>select substring('helloworld',5,3),substring('hello
world',5),substring('helloworld',-3),substring('helloworld',-5,4)\G
*************************** 1. row ***************************
 substring('helloworld',5,3): owo
   substring('helloworld',5): oworld
  substring('helloworld',-3): rld
substring('helloworld',-5,4): worl
1 row in set (0.05 sec)

其中,第二种使用方法省略了len值,这个值如果省略,则返回的是从第n个字符开始后面所有的字符串,第三种方法使用了n=-3的方法,说明是从字符串末尾开始数的,直到字符串的结尾,第四种方法则是从末尾倒数第5个字符开始,截取4个字符作为子串。

4匹配子串开始位置的函数

locate、position、instr三个函数的作用相同,都是返回子串在字符串中的位置。来看例子:

root@localhost:3306 [(none)]>select locate('ball','football'),position('ball' in
 'football'),instr('football','ball')\G
*************************** 1. row ***************************
     locate('ball','football'): 5
position('ball' in 'football'): 5
      instr('football','ball'): 5
1 row in set (0.00 sec)

需要注意的是instr函数需要把子串的位置放在后面,其他两个函数子串的位置是放在前面的。

5.字符串逆序的函数

reverse(str),这个比较好理解,这里给出例子:

root@localhost:3306 [(none)]>select reverse('helloworld');
+-----------------------+
| reverse('helloworld') |
+-----------------------+
| dlrowolleh            |
+-----------------------+
1 row in set (0.00 sec)

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

ELT(n,str0,str1,str2),返回后面那些字符串的第n个,如果越界,则返回null

root@localhost:3306 [(none)]>select elt(3,'1st','2nd','3rd'),elt(3,'1st','2nd');
+--------------------------+--------------------+
| elt(3,'1st','2nd','3rd') | elt(3,'1st','2nd') |
+--------------------------+--------------------+
| 3rd                      | NULL               |
+--------------------------+--------------------+
1 row in set (0.00 sec)

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

field函数使用方法如下:

field(dst,str1,str2,str3,str4)返回的是后面的字符串中第一个等于dst的字符串的位置,如果不存在,则返回0,示例如下:

root@localhost:3306 [(none)]>select field('hello','I','am','hello'),field('hello
','I','am','a','student');
+---------------------------------+---------------------------------------+
| field('hello','I','am','hello') | field('hello','I','am','a','student') |
+---------------------------------+---------------------------------------+
|                               3 |                                     0 |
+---------------------------------+---------------------------------------+
1 row in set (0.00 sec)

这个函数还有一个变形之后的函数,叫做find_in_set,它代表函数在一个set集合中的位置,使用方法和field一样,举个例子:

root@localhost:3306 [test]>select find_in_set('hello','I,am,hello'),field('hello
','I','am','hello');
+-----------------------------------+---------------------------------+
| find_in_set('hello','I,am,hello') | field('hello','I','am','hello') |
+-----------------------------------+---------------------------------+
|                                 3 |                               3 |
+-----------------------------------+---------------------------------+
1 row in set (0.00 sec)

8.返回子串位置的函数trim(s1 from s2)

看看实例:

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

关于字符串的函数大概就这么多了,后续如果还有遗漏,将会进行补充。

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447),作者:AsiaYe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何预防死锁发生

    1、尽量不要主动使用Lock table之类的语句,使用事务去代替此来操作。之前有过开发同学想向DBA申请lock table权限,这个行为本身是不妥当的。

    AsiaYe
  • Python之函数编程(2)

    在上面的命令中,我们定义一个return_sum()的函数,这个函数返回一个sum的函数,sum函数的作用是求一个可迭代对象的所有元素的和,当我们直接调...

    AsiaYe
  • 关于null值的一个小问题

    一个业务方给了一个SQL,要让在线上执行,具体的SQL抽象完成之后是这样的:

    AsiaYe
  • Oracle应用实战六——函数+集合

    函数 字符函数 接收字符输入返回字符或者数值,dual是伪表 1. 把小写的字符转换成大小的字符 upper('smith') ? 2. 把大写字符变成小写字符...

    奋斗蒙
  • python中set集合常用方法

    #different_update():把集合set中和set2不一样的元素取出来并且更新到set里面

    用户2398817
  • [android] 短信的备份

    /data/data/com.android.providers.telephony/databases/mmssms.db

    陶士涵
  • 零基础学习 Python 之集合

    大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面。我是完全自学的 Python,所以很...

    Rocky0429
  • python(四)

          在python里面  set是基本数据类型的一种集合的类型,他有可变的集合(set())和不可变的(frozenset)两种,包括集合set,集合s...

    用户2398817
  • python 开发环境配置

    程序员同行者
  • Python计算有向图节点的入度和出度

    本文代码使用字典和集合模拟有向图结构,也可以改用其他的数据类型来实现。 def getDegrees(orientedGraph, node): #出度 ...

    Python小屋屋主

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动