我有一个像这样的“1; 2; 3; 4; 8; 9; 11;”
的字段如果我想搜索一个数字是否在这个范围内,我就这样做:
SELECT * FROM table WHERE [id] LIKE '[number];%' OR '%;[number];%'
还有另一种更简单的方法可以分割字符串吗?
非常感谢
答案 0 :(得分:1)
如果要将值存储在字符串中,使用like
的最佳方法是:
SELECT *
FROM table
WHERE concat(';', @numbers) like concat('%;', [id], ';%')
当分隔符是逗号时,MySQL还提供find_in_set()
:
SELECT *
FROM table
WHERE find_in_set(id, replace(@numers, ';', ',')
答案 1 :(得分:0)
将IN()
与逗号分隔的ID字符串
SELECT * FROM table WHERE id IN(1,2,3,4,8,9,11)
答案 2 :(得分:0)
helper
的表,其中包含两个字段:number
和id
。您需要通过拆分id字段以编程方式创建它,并为每个id中的每个数字在此表中添加一行。number
select table.* from table where id in (select id from helper where number = 23)
答案 3 :(得分:0)
你可以用这个
SELECT name ,`from`, find_in_set('4' , REPLACE(`from`, ';', ',')) as the_place_of_myval FROM reservation
having the_place_of_myval != 0
demo here有两个例子。