通过trim函数在\ set wo中查找\值

icomxhvb  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(280)

我有一个包含逗号分隔值字符串的列。我用 FIND_IN_SET 查询此列,直到值和 , . 我无法控制输入。我发现唯一可行的解决方案是运行 REPLACEFIND_IN_SET 功能。不幸的是,这将删除所有空格,并可能返回不希望的结果。
blow示例将返回表中的两行,而不是只返回第一行。

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

查询

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

有没有办法限制这一点,只修剪空间枯萎的一面 ,

cwtwac6a

cwtwac6a1#

你可以试着换一个 ,[ ] 或者 [ ], 仅用逗号:

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

演示

注意:此答案假设逗号周围最多有一个前导/尾随空格,并且实际数据本身不包含逗号。如果有任意数量的空白,这个答案将失败。在这种情况下,您真正需要的是regex替换。MySQL8+确实支持这一点,但更好的选择是规范化您的数据并停止像这样存储csv数据。

相关问题