gpt4 book ai didi

MySQL将逗号分隔的字符串拆分为临时表

转载 作者:IT老高 更新时间:2023-10-28 23:45:57 27 4
gpt4 key购买 nike

你能在 MySQL 中使用 RegEx 将逗号分隔的字符串解析为临时表吗?

'1|2|5|6' into temp table with 4 rows.

最佳答案

这与 Can Mysql Split a column? 的问题几乎相同。

MySQL 没有拆分字符串功能,因此您必须解决问题。使用上面答案页面上列出的方法之一拆分数据后,您可以对数据执行任何操作。

您可以遍历该自定义函数并在它返回空时中断,您必须玩并学习一些语法(或者至少我会)但是 mysql 中 FOR 循环的语法在这里: http://www.roseindia.net/sql/mysql-example/for.shtml

你可以迭代它,在下面的函数中增加位置:

CREATE FUNCTION SPLIT_STR(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');

(信用:https://blog.fedecarg.com/2009/02/22/mysql-split-string-function/)

如果没有找到匹配项,应该返回 '',所以如果没有找到匹配项就中断循环。这将允许您仅使用 mysql 解析拆分字符串并将插入查询运行到临时表中。但是人为什么不直接使用像 php 这样的脚本语言来完成这种工作呢? :(

循环语法代码:

DELIMITER $$  

CREATE PROCEDURE ABC(fullstr)

BEGIN
DECLARE a INT Default 0 ;
DECLARE str VARCHAR(255);
simple_loop: LOOP
SET a=a+1;
SET str=SPLIT_STR(fullstr,"|",a);
IF str='' THEN
LEAVE simple_loop;
END IF;
#Do Inserts into temp table here with str going into the row
insert into my_temp_table values (str);
END LOOP simple_loop;
END $$

关于MySQL将逗号分隔的字符串拆分为临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835155/

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