我有一个像这样构建的字段“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], ';%')
find_in_set()
当分隔符是逗号时,MySQL 还提供:
SELECT *
FROM table
WHERE find_in_set(id, replace(@numers, ';', ',')
IN()
与逗号分隔的 ID 字符串一起使用
SELECT * FROM table WHERE id IN(1,2,3,4,8,9,11)
helper
2 个字段的表:number
和id
. 您将需要通过拆分 id 字段以编程方式创建它,并为每个 id 中的每个数字在此表中添加一行。number
select table.* from table where id in (select id from helper where number = 23)
你可以用这个
SELECT name ,`from`, find_in_set('4' , REPLACE(`from`, ';', ',')) as the_place_of_myval FROM reservation
having the_place_of_myval != 0
demo 这里 在我的演示中有两个例子。