我有一个计划不佳的数据库,该数据库在诸如“ 1、2、5、10”之类的文本列中有一个ID集。我需要得到以相同方式设置的两列的交集。我不喜欢使用PHP或其他脚本语言来执行此操作,我也不喜欢MySQL自定义函数。有什么办法可以得到逗号分隔字符串给定的两个集合的交集?
实际上,我不需要完整的交集,我只需要知道两组中是否存在相同的数字。如果是,我需要具有“ 1”,如果没有相同的数字,则需要具有“ 0”。
谢谢你。
您可能可以通过REGEXP一些巧妙的替换来做到这一点。
REGEXP
认为应该这样做(免责声明:尚未对其进行广泛的测试):
SELECT col1, col2, CONCAT('(', REPLACE(col2, ',', '(\\,|$)|'), '(\\,|$))') AS regex, col1 REGEXP CONCAT('(', REPLACE(col2, ',', '(\\,|$)|'), '(\\,|$))') AS intersect FROM tbl
解释:这将转换col2为用于与匹配的正则表达式col1。该(\,|$)位与逗号或字符串末尾匹配。希望这可以帮助…
col2
col1
(\,|$)