gpt4 book ai didi

MySql解析,在不知道分割数的情况下分割成几行

转载 作者:行者123 更新时间:2023-11-29 07:45:03 25 4
gpt4 key购买 nike

现在。我正在将选项从 tableA 迁移到 tableB:
表A

╔═══════════╦══════════════╗
║ id_skills ║ skills ║
╠═══════════╬══════════════╣
║ 1 ║ Java, Python ║
║ 2 ║ JavaScript ║
║ 3 ║ Ruby, Java ║
║ 4 ║ Python, C# ║
║ 5 ║ C++, Ruby ║
╚═══════════╩══════════════╝

表B

╔═══════════╦════════════╗
║ id_skills ║ skills ║
╠═══════════╬════════════╣
║ 1 ║ Java ║
║ 2 ║ JavaScript ║
║ 3 ║ Ruby ║
║ 4 ║ C# ║
║ 5 ║ C++ ║
║ 6 ║ Python ║
╚═══════════╩════════════╝

我试图找到一个 sql 函数,用于取消字符串连接
并且是在脚本中创建所有内容所必需的
我们真的不知道每行中有多少个“,”。
示例:
“Java、Python”
在本例中,分为两行:
-> Java
-> Python

注意:MySql中没有分割字符串的函数

最佳答案

如果您知道字符串中可能值的最大数量,则可以使用 substring_index() 在查询中执行此操作:

select (@rn := @rn + 1) as id_skills,
substring_index(substring_index(a.skills, ', ', n.n), ', ', -1) as skill
from tableA a join
(select 1 as n union all select 2 union all select 3 union all select 4
) n
on n.n <= 1 + length(a.skills) - length(replace(a.skills, ',', '') cross join
(select @rn := 0) vars;

您只需确保 n 子查询中有足够的值即可。

关于MySql解析,在不知道分割数的情况下分割成几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com