concat regex左连接

vbopmzt1  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(272)

我需要从行值是逗号分隔字符串的表中获取数据,如下所示: 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,')(,|$)')

lymnna71

lymnna711#

我强烈反对这种数据模型。你的下一个问题很可能是关于性能的——而且真的没有希望了。列表应该有一个连接/关联表,而不是将多个值存储在一个字符串中。
有时候,我们会被其他人的糟糕的设计决策所困扰。如果是这样的话,mysql有一个函数可以帮助您:

SELECT ... s.`other_thing`
FROM x LEFT JOIN
     something s
     ON find_in_set(s.id, x.really_bad_list_format) > -

相关问题