我有一个包含逗号分隔值字符串的列。我用 FIND_IN_SET
查询此列,直到值和 ,
. 我无法控制输入。我发现唯一可行的解决方案是运行 REPLACE
在 FIND_IN_SET
功能。不幸的是,这将删除所有空格,并可能返回不希望的结果。
blow示例将返回表中的两行,而不是只返回第一行。
col1 | col2
carpet , foo, bar | myVal1
abc, 123 , car pet | myVal2
查询
SELECT FIND_IN_SET('carpet', REPLACE(col1, ' ', ''));
有没有办法限制这一点,只修剪空间枯萎的一面 ,
1条答案
按热度按时间cwtwac6a1#
你可以试着换一个
,[ ]
或者[ ],
仅用逗号:演示
注意:此答案假设逗号周围最多有一个前导/尾随空格,并且实际数据本身不包含逗号。如果有任意数量的空白,这个答案将失败。在这种情况下,您真正需要的是regex替换。MySQL8+确实支持这一点,但更好的选择是规范化您的数据并停止像这样存储csv数据。