【发布时间】:2018-10-29 10:47:31
【问题描述】:
我有一列包含一串以逗号分隔的值。我使用FIND_IN_SET 来查询此列,它可以正常工作,直到值和, 之间有空格。我无法控制输入。我发现唯一可行的解决方案是在FIND_IN_SET 函数内的列上运行REPLACE。不幸的是,这将删除所有空格并可能返回不希望的结果。
blow 示例将返回表中的两行,而不是仅返回第一行。
col1 | col2
carpet , foo, bar | myVal1
abc, 123 , car pet | myVal2
查询
SELECT FIND_IN_SET('carpet', REPLACE(col1, ' ', ''));
有没有办法限制它只修剪,的空间枯萎侧
【问题讨论】:
-
你描述的问题匹配坏表设计时间来了解规范化..
-
如果你可以访问 MySQL 服务器 8.0 版,你可以使用
REGEXP -
@RaymondNijland 我完全意识到有缺陷的设计。我的任务是在解决数据问题时提供临时解决方案
-
@MadhurBhaiya 我过去在 MySQL 中使用过
REGEX,发现它非常慢 -
“我过去在 MySQL 中使用过 REGEX,发现它非常慢”没有解决方案可以让它变得更快...... FIND_IN_SET 和 REGEXP 一样糟糕跨度>
标签: mysql