一、当字符串之间没有分隔符

遍历字符串时我们需要一个辅助表与原表做连接查询

辅助表中的数字就是表示字符串中各个字符的位置

要求该辅助表必须有足够多的行数保证循环操作的次数

例:把emp表中等于king的字符串拆开来显示为4行,每行一个字符

辅助表T10

SELECT SUBSTR(list.val,iter.pos,1) c FROM(

(SELECT ename val FROM emp WHERE ename = 'king') listINNER JOIN(SELECT id pos FROMt10) iterON iter.pos <=LENGTH(list.val)

);

结果:

分析:

首先做两表内连接,连接的条件是辅助表的数字pos要小于等于字符串中字符的总个数

其实,在这里,辅助表中连续的数字就对应了字符串中每个字符的位置

如果先不截取字符串,而是先把两表连接的结果都查询出来,结果如下图

发现:一个字符串有多少个字符,就会出现多少行,并且每一行都有连续对应的数字pos

我们再根据每一行的数字去截取相对应字符串位置的字符

二、当字符串之间有分隔符

此时我们人需要辅助表做连接查询,但是连接查询的条件发生了变化;

此外需要substring_index () 函数来截取字符串。

例如:t1表中有一句话是“今天周末,我看了CBA篮球总决赛,最终广东队赢得了冠军”,把这句话以逗号为分隔符拆开,显示成3行

1 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(list.val,',',iter.pos),',',-1) c2 FROM(3 (SELECT '今天周末,我看了CBA篮球总决赛,最终广东队赢得了冠军' val FROMt1) LIST4 INNER JOIN

5 (SELECT id pos FROMt10) iter6 ON iter.pos <= ((LENGTH(list.val)-LENGTH(REPLACE(list.val,',','')))/3+1) #此处除以三是因为汉字占3个字节7 );

结果:

分析:

此时,辅助表中数字的作用不再是表示字符串中字符的位置了,而是用来标记分隔符出现的个数

(LENGTH(list.val)-LENGTH(REPLACE(list.val,',','')))/3的最终结果是2,表示这句话一共有2个逗号;

在此基础上加一是因为2个逗号把这句话分成了3段,所以 iter.pos最终有三个数字

根据substring_index函数的用法可知,

SUBSTRING_INDEX(list.val,',',iter.pos)是用来找出处第一个一直到第三个逗号前的字符串

在上图结果下,使用 SUBSTRING_INDEX(SUBSTRING_INDEX(list.val,',',iter.pos),',',-1)

找出从右边开始数,分隔符第一次出现后右边全部的字符串,及最终结果

mysql遍历字符串字符的函数_在MySQL中遍历字符串相关推荐

  1. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  2. java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...

    专注于Java领域优质技术号,欢迎关注 原创: 阿杜的世界 阅读本文大概需要 4分钟. 所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象.这意味着当我们将一个不可变对象的引用赋值给某 ...

  3. python输出字符串后三位_在python中,字符串s =

    [单选题][图片] [单选题]This kind of car _____ made in Shanghai. [判断题]真正衡量数字通信系统的有效性指标是频带利用率. [单选题]小王正在考虑在他的总 ...

  4. python中空格字符是什么_关于Python中空格字符串处理的技巧总结

    前言 大家应该都知道字符串处理,是任何语言最常用到的. 其中就经常会碰到,对字符串中的空格处理,比如:去除前后空格,去除全部空格,或者以空格为分隔符来处理. 好在Python中字符串有很多方法,比如l ...

  5. python中空格字符怎么表示_关于Python中空格字符串处理的技巧总结

    前言 大家应该都知道字符串处理,是任何语言最常用到的. 其中就经常会碰到,对字符串中的空格处理,比如:去除前后空格,去除全部空格,或者以空格为分隔符来处理. 好在Python中字符串有很多方法,比如l ...

  6. mysql数据库求平均值的函数_使用MySQL中的AVG函数求平均值的教程

    MySQL的AVG函数是用来求出各种记录中的字段的平均值. 要了解AVG功能考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...

  7. mysql 只读权限 不能访问函数_通用mysql只读函数

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. scala字符串的拉链操作_在Scala中对字符串进行操作

    scala字符串的拉链操作 Scala字符串操作 (Scala strings operation) A string is a very important datatype in Scala. T ...

  9. php语言中计算字符串长度的函数是,php 语言中计算字符串长度函数是:

    [单选题]Who is the director of the film Farewell My Lady ? [多选题]建筑构造设计的原则有(). [多选题]处理色彩时,主色.辅色.点缀色的比例为: ...

最新文章

  1. UVA11646 Athletics Track(计算几何、弧长公式)
  2. Xilinx 7系列FPGA介绍
  3. 钉钉服务器端SDK PHP版
  4. 自动从mysql下载文件到powerbi_关于在Power Query和Power BI中从网页下载文件的小提示...
  5. 计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络
  6. 洛谷P3338:力(FFT)
  7. 如何保证 Redis 消息队列中的数据不丢失?
  8. POS机刷卡机招商加盟企业网站源码
  9. python-MYSQL(包括ORM)交互
  10. java merge_java – OptimisticLockException当使用JPA merge()
  11. pps服务器未响应_pps服务器未响应停止播放怎么解决
  12. java调用短信api接口发送短信demo实例
  13. 逻辑谬误_Java性能的9个谬误
  14. vue项目中使用思维导图mindmap
  15. sharp计算机按钮配置,将Sharp TV HDMI接口连接到计算机并设置教程
  16. Javaweb大作业文档部分预览
  17. 注册Gmail邮箱需要手机验证
  18. C++基于libxls库读取xls文件
  19. jquery vue 替代_vue能代替jquery吗
  20. Hi3516的venc编码模块处理流程

热门文章

  1. python中的管理文件神器 os.walk
  2. 08-Nginx缓存集成
  3. 做一个领导喜欢的员工
  4. ​一文看懂5G时代云游戏产业的投资机会【附报告下载】
  5. 掷骰子python代码_如何使用python的random模拟掷骰子的数据
  6. mysql的四种索引类型
  7. PHP直播爬虫,B 站直播间数据爬虫
  8. 围绕github的一个创业思路
  9. 怎么画单极交流放大电路波形图_LED灯泡:超低成本的LED恒流驱动电路
  10. Android之Shader完全理解指南