可以把一个单词分成几行吗?我找到的所有例子都是用逗号之类的东西来表示的,但我想把每个字母和一个单词分开,例如:
来自(我的桌子):
id | name |
---|---|
1 | banana |
收件人:SELECT ...
id | letter |
---|---|
1 | b |
1 | a |
1 | n |
1 | a |
1 | n |
1 | a |
可以把一个单词分成几行吗?我找到的所有例子都是用逗号之类的东西来表示的,但我想把每个字母和一个单词分开,例如:
来自(我的桌子):
id | name |
---|---|
1 | banana |
收件人:SELECT ...
id | letter |
---|---|
1 | b |
1 | a |
1 | n |
1 | a |
1 | n |
1 | a |
一种 Select 是使用递归查询,使用以下两个步骤:
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.