我有一个像这样构建的字段“1;2;3;4;8;9;11;”
如果我想搜索一个数字是否在这个范围内,我会这样做:
SELECT * FROM table WHERE [id] LIKE '[number];%' OR '%;[number];%'
还有其他更简单的方法可以拆分字符串吗?
非常感谢
最佳答案
如果您将值存储在字符串中,使用like
的最佳方式是:
SELECT *
FROM table
WHERE concat(';', @numbers) like concat('%;', [id], ';%')
当分隔符是逗号时,MySQL 还提供了 find_in_set()
:
SELECT *
FROM table
WHERE find_in_set(id, replace(@numers, ';', ',')
关于MYSQL 爆炸搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136827/