小编典典

MySQL字符串设置和获取交集

sql

我有一个计划不佳的数据库,该数据库在诸如“
1、2、5、10”之类的文本列中有一个ID集。我需要得到以相同方式设置的两列的交集。我不喜欢使用PHP或其他脚本语言来执行此操作,我也不喜欢MySQL自定义函数。有什么办法可以得到逗号分隔字符串给定的两个集合的交集?

实际上,我不需要完整的交集,我只需要知道两组中是否存在相同的数字。如果是,我需要具有“ 1”,如果没有相同的数字,则需要具有“ 0”。

谢谢你。


阅读 267

收藏
2021-04-14

共1个答案

小编典典

您可能可以通过REGEXP一些巧妙的替换来做到这一点。

认为应该这样做(免责声明:尚未对其进行广泛的测试):

SELECT col1,
       col2,
       CONCAT('(', REPLACE(col2, ',', '(\\,|$)|'), '(\\,|$))') AS regex,
       col1 REGEXP CONCAT('(', REPLACE(col2, ',', '(\\,|$)|'), '(\\,|$))') AS intersect
FROM tbl

解释:这将转换col2为用于与匹配的正则表达式col1。该(\,|$)位与逗号或字符串末尾匹配。希望这可以帮助…

2021-04-14