可以把一个单词分成几行吗?我找到的所有例子都是用逗号之类的东西来表示的,但我想把每个字母和一个单词分开,例如:

来自(我的桌子):

id name
1 banana

收件人:SELECT ...

id letter
1 b
1 a
1 n
1 a
1 n
1 a

推荐答案

一种 Select 是使用递归查询,使用以下两个步骤:

  • 基本步骤:将字母放在位置1
  • 递归步骤:获取第n个字母,使用LEFT(RIGHT(1), n),提取第n个位置的字母.

当第n个提取元素大于字符串长度时,递归停止.

WITH RECURSIVE cte AS (
    SELECT id, name,
           1 AS idx, 
           RIGHT(LEFT(name, 1),1) AS letter 
    FROM tab
  
    UNION ALL
  
    SELECT id, name,
           idx + 1 AS idx,
           RIGHT(LEFT(name, idx+1), 1) AS letter
    FROM cte
    WHERE idx < LENGTH(name)
)
SELECT id, letter FROM cte

输出:

id letter
1 b
1 a
1 n
1 a
1 n
1 a

查看演示here.

Mysql相关问答推荐

完全相同的A B表达在SQL中的不同上下文中意外返回不同的结果

MySQL嵌套的内连接使查询变得很慢-解决方案?

在带有 D.I 的 .NET AWS Lambda 中使用 MySql.Data

从 MySQL WordPress Select 最后一行

此更新查询是否有任何可能的重写选项?

插入二进制数据会导致Data too long for column...

MySQL如何在小时和分钟之间 Select 时间

为什么 fetch 方法不能获取任何东西?(feat node.js,restAPI)

在 MySQL 中转换 JSON 数组值

在 MySQL 中为多列创建索引以进行查询优化

计算每个用户在第二个表中有多少条记录

更改整数时间到日期格式 MM/DD/YY,如 python 中的 datetime.fromtimestamp

如何在 Windows 上访问 xampp 的命令行

SQL 中的双杠 (||) 是什么意思?

PHP PDO 与普通 mysql_connect

在 MySQL 中检测 utf8 损坏的字符

按日期和时间降序排序?

在mysql中复制没有数据的数据库 struct (带有空表)

MySQL - 基于同一表中的行求和列值

如何从命令行调用带有参数的mysql存储过程?