MySQL逗号将值分隔成多行

时间:2017-02-23 17:37:42

标签: mysql sql database rows

我试图拆分字符串值,它作为参数传递给我的SQL函数成多行。我尝试了很多样品,但我找不到正确的输出。

这是我的代码:

DROP function if exists F_Split;
DROP TABLE if exists temp1;

CREATE TEMPORARY TABLE temp1(val CHAR(255));
DELIMITER $$
CREATE FUNCTION F_Split (x1 char(50)) 
RETURNS char(100)
DETERMINISTIC
BEGIN
DECLARE colval varchar(100);    
SET @sql = CONCAT("insert into temp1 (val) values ('", REPLACE(x1, ",", "'),('"),"');");
select val from temp1 into colval;
RETURN colval;
END$$
DELIMITER ;

select F_Split('6,4');

我用一个参数调用F_Split(' 6,4'),我试图将值存储到临时表中,函数需要返回2行基于逗号分离。即

例外输出:

Row1:6
Row2:4

实际输出: 空。

我知道插入语句不能正常工作,但我不知道如何解决这个问题。 我想在用户定义函数中实现。 需要帮助!感谢

1 个答案:

答案 0 :(得分:0)

用户定义函数的返回类型是char(100),而不是包含2行的表...

无论如何,函数无法返回表,请参阅此处接受的返回类型https://dev.mysql.com/doc/refman/5.7/en/create-function-udf.html

也许您可以创建一个存储过程来填充具有拆分值的临时表,但是不能在select语句中调用存储过程