gpt4 book ai didi

mysql - 具有值修剪功能的 FIND_IN_SET

转载 作者:行者123 更新时间:2023-11-29 05:52:08 29 4
gpt4 key购买 nike

我有一列包含一串以逗号分隔的值。我使用 FIND_IN_SET 查询此列,它工作正常,直到值和 , 之间有一个空格。我无法控制输入。我发现唯一可行的解​​决方案是在 FIND_IN_SET 函数内的列上运行 REPLACE。不幸的是,这将删除所有空格并可能返回不需要的结果。

下例将返回表中的两行,而不是仅返回第一行。

col1                  | col2      
carpet , foo, bar | myVal1
abc, 123 , car pet | myVal2

查询

SELECT FIND_IN_SET('carpet', REPLACE(col1, ' ', ''));

有没有一种方法可以限制它只修剪 , 的空间枯萎边

最佳答案

您可以尝试将 ,[ ][ ], 替换为逗号:

SELECT
col1,
col2,
FIND_IN_SET('carpet', REPLACE(REPLACE(col1, ', ', ','), ' ,', ',')) AS output
FROM yourTable;

enter image description here

Demo

注意:此答案假定逗号周围最多有一个前导/尾随空格,并且您的实际数据本身不包含逗号。如果可以有任意数量的空格,这个答案就会失败。在那种情况下,您真正​​需要的是替换正则表达式。 MySQL 8+ 确实支持这一点,但更好的办法是规范化您的数据并停止像这样存储 CSV 数据。

关于mysql - 具有值修剪功能的 FIND_IN_SET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043856/

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