gpt4 book ai didi

mysql - GROUP CONCAT REPLACE sep 字符串

转载 作者:行者123 更新时间:2023-11-29 12:42:44 25 4
gpt4 key购买 nike

我使用以下语句从表中以“|”分隔的字段中提取唯一值。它看起来像这样:“40|180|408|360|40|1s66|80|59”我的问题是我似乎无法得到这个语句来允许我提取主键字段、id 并分配它字段字符串中的每个唯一项目,以便我稍后可以实际使用它。理想情况下,应将 ID # 27 分配给该临时表上的每个值(“40|180|408|360|40|1s66|80|59”)。任何人都可以帮助执行以下语句,以允许我从表 BlogImageBundle 中插入字段 ID 并为其分配字段 ID 吗?

CREATE TEMPORARY TABLE test (postId INT(11), val CHAR(255));
SET @S1 = CONCAT("INSERT INTO test (val) VALUES ('",REPLACE((SELECT GROUP_CONCAT( DISTINCT `images`)
AS data FROM `BlogImageBundle`), "|", "'),('"),"');");
PREPARE stmt1 FROM @s1;
EXECUTE stmt1;
SELECT DISTINCT(val) FROM test;

最佳答案

这有效,但仅适用于一条记录。您将需要添加另一个 while 循环来跟踪行计数以处理多个记录: http://sqlfiddle.com/#!6/d62f7/1

CREATE TABLE #Test
(
ID INT,
Initial VARCHAR(MAX)
)
CREATE TABLE #Test2
(
ID INT,
Final VARCHAR(MAX)
)
INSERT INTO #Test VALUES(27,'40|180|408|360|40|1s66|80|59')

DECLARE @String VARCHAR(MAX)
SET @string = (SELECT Initial FROM #Test)

DECLARE @StringInput VARCHAR(MAX)
SET @stringInput = (SELECT Initial FROM #Test)
WHILE LEN(@StringInput) > 0
BEGIN
SET @String = LEFT(@StringInput,ISNULL(NULLIF(CHARINDEX('|', @StringInput) - 1, -1),LEN(@StringInput)))
SET @StringInput = SUBSTRING(@StringInput,ISNULL(NULLIF(CHARINDEX('|', @StringInput), 0),LEN(@StringInput)) + 1, LEN(@StringInput))
INSERT INTO #Test2 (ID, Final)
SELECT ID,@string FROM #Test
END

关于mysql - GROUP CONCAT REPLACE sep 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895554/

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