mysql遍历字符串字符的函数_在MySQL中遍历字符串
一、当字符串之间没有分隔符
遍历字符串时我们需要一个辅助表与原表做连接查询
辅助表中的数字就是表示字符串中各个字符的位置
要求该辅助表必须有足够多的行数保证循环操作的次数
例:把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中遍历字符串相关推荐
- c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...
C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...
- java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...
专注于Java领域优质技术号,欢迎关注 原创: 阿杜的世界 阅读本文大概需要 4分钟. 所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象.这意味着当我们将一个不可变对象的引用赋值给某 ...
- python输出字符串后三位_在python中,字符串s =
[单选题][图片] [单选题]This kind of car _____ made in Shanghai. [判断题]真正衡量数字通信系统的有效性指标是频带利用率. [单选题]小王正在考虑在他的总 ...
- python中空格字符是什么_关于Python中空格字符串处理的技巧总结
前言 大家应该都知道字符串处理,是任何语言最常用到的. 其中就经常会碰到,对字符串中的空格处理,比如:去除前后空格,去除全部空格,或者以空格为分隔符来处理. 好在Python中字符串有很多方法,比如l ...
- python中空格字符怎么表示_关于Python中空格字符串处理的技巧总结
前言 大家应该都知道字符串处理,是任何语言最常用到的. 其中就经常会碰到,对字符串中的空格处理,比如:去除前后空格,去除全部空格,或者以空格为分隔符来处理. 好在Python中字符串有很多方法,比如l ...
- mysql数据库求平均值的函数_使用MySQL中的AVG函数求平均值的教程
MySQL的AVG函数是用来求出各种记录中的字段的平均值. 要了解AVG功能考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...
- mysql 只读权限 不能访问函数_通用mysql只读函数
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- scala字符串的拉链操作_在Scala中对字符串进行操作
scala字符串的拉链操作 Scala字符串操作 (Scala strings operation) A string is a very important datatype in Scala. T ...
- php语言中计算字符串长度的函数是,php 语言中计算字符串长度函数是:
[单选题]Who is the director of the film Farewell My Lady ? [多选题]建筑构造设计的原则有(). [多选题]处理色彩时,主色.辅色.点缀色的比例为: ...
最新文章
- UVA11646 Athletics Track(计算几何、弧长公式)
- Xilinx 7系列FPGA介绍
- 钉钉服务器端SDK PHP版
- 自动从mysql下载文件到powerbi_关于在Power Query和Power BI中从网页下载文件的小提示...
- 计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络
- 洛谷P3338:力(FFT)
- 如何保证 Redis 消息队列中的数据不丢失?
- POS机刷卡机招商加盟企业网站源码
- python-MYSQL(包括ORM)交互
- java merge_java – OptimisticLockException当使用JPA merge()
- pps服务器未响应_pps服务器未响应停止播放怎么解决
- java调用短信api接口发送短信demo实例
- 逻辑谬误_Java性能的9个谬误
- vue项目中使用思维导图mindmap
- sharp计算机按钮配置,将Sharp TV HDMI接口连接到计算机并设置教程
- Javaweb大作业文档部分预览
- 注册Gmail邮箱需要手机验证
- C++基于libxls库读取xls文件
- jquery vue 替代_vue能代替jquery吗
- Hi3516的venc编码模块处理流程