Ana*_*Ana 9 sql csv string recursive-query mariadb
我有这个专栏:
names
John, Mary
Joseph
Eleanor, Sophia, Dani
Run Code Online (Sandbox Code Playgroud)
我想要这个输出:
names
John
Mary
Joseph
Eleanor
Sophia
Dani
Run Code Online (Sandbox Code Playgroud)
它应该包括 SUBSTRING_INDEX 函数
您可以使用递归 CTE:
with recursive cte as (
select ' ' as name, concat(names, ',') as names, 1 as lev
from t
union all
select substring_index(names, ',', 1),
substr(names, instr(names, ',') + 2), lev + 1
from cte
where names like '%,%'
)
select name
from cte
where lev > 1;
Run Code Online (Sandbox Code Playgroud)
这是一个 db<>fiddle。
一种选项使用递归查询:
with recursive
data as (select concat(names, ', ') names from mytable),
cte as (
select
substring(names, 1, locate(', ', names) - 1) word,
substring(names, locate(', ', names) + 2) names
from data
union all
select
substring(names, 1, locate(', ', names) - 1) word,
substring(names, locate(', ', names) + 2) names
from cte
where locate(', ', names) > 0
)
select word from cte
Run Code Online (Sandbox Code Playgroud)
| 词| | :------ | | 约翰 | | 约瑟夫| | 埃莉诺| | 玛丽| | 索菲亚 | | 丹妮 |
| 归档时间: |
|
| 查看次数: |
7088 次 |
| 最近记录: |