mysql 循环字符串_MySQL 遍历字符

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:

scott建表及录入数据sql脚本

一.需求

遍历一个字符,并将其中的每个字符都作为一行返回,但是sql没有循环操作

例如:

要将表EMP中ENAME值为'KING'的字符串显示为4行,每行中都包含"KING"中的一个字符

二.解决方案

使用笛卡尔积生成行号,用来在该行中返回字符串中的每个字符。

然后使用MySQL内置的字符串分析函数来摘出所要的字符。

代码:

-- 解决 t10这样一个表来形成笛卡尔积

select substr(e.ename,iter.pos,1) as C

from (select ename from emp where ename = 'KING') e,

(select id as pos from t10) iter

where iter.pos <= length(e.ename)

测试记录:

mysql> create table t10(id int);

Query OK, 0 rows affected (0.02 sec)

mysql> insert into t10 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

Query OK, 10 rows affected (0.00 sec)

Records: 10 Duplicates: 0 Warnings: 0

mysql> select * from t10;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

| 8 |

| 9 |

| 10 |

+------+

10 rows in set (0.00 sec)

mysql> select substr(e.ename,iter.pos,1) as C

-> from (select ename from emp where ename = 'KING') e,

-> (select id as pos from t10) iter

-> where iter.pos <= length(e.ename);

+------+

| C |

+------+

| K |

| I |

| N |

| G |

+------+

4 rows in set (0.00 sec)

mysql>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值