我需要从行值是逗号分隔字符串的表中获取数据,如下所示: 5,10,16,25,7
我还用了一个 LEFT JOIN
,所以我需要这样的东西:
// ...
SELECT ... s.`other_thing`
LEFT JOIN `something` s
ON w.`whatever` = REGEXP CONCAT('(,|^)', s.`id`, '(,|$)')
// ...
我需要这样的东西: (,|^)5(,|$)
在 ON
编辑:我用一个简单的方法解决了这个问题 LIKE CONCAT('%', s.id, '%')
编辑2:如果您想连接正则表达式,可以使用: REGEXP CONCAT('(^|,)(',s.id,')(,|$)')
1条答案
按热度按时间lymnna711#
我强烈反对这种数据模型。你的下一个问题很可能是关于性能的——而且真的没有希望了。列表应该有一个连接/关联表,而不是将多个值存储在一个字符串中。
有时候,我们会被其他人的糟糕的设计决策所困扰。如果是这样的话,mysql有一个函数可以帮助您: