2

我有一个像这样构建的字段“1;2;3;4;8;9;11;”

如果我想搜索一个数字是否在这个范围内,我会这样做:

SELECT * FROM table WHERE [id] LIKE '[number];%' OR '%;[number];%'

还有另一种更简单的方法可以拆分字符串吗?

非常感谢

4

4 回答 4

1

如果要将值存储在字符串中,最好的使用方法like是:

SELECT *
FROM table
WHERE concat(';', @numbers) like concat('%;', [id], ';%')

find_in_set()当分隔符是逗号时,MySQL 还提供:

SELECT *
FROM table
WHERE find_in_set(id, replace(@numers, ';', ',')
于 2013-06-16T19:25:16.587 回答
0

IN()与逗号分隔的 ID 字符串一起使用

SELECT * FROM table WHERE id IN(1,2,3,4,8,9,11)
于 2013-06-16T19:20:42.500 回答
0
  1. 创建另一个名为helper2 个字段的表:numberid. 您将需要通过拆分 id 字段以编程方式创建它,并为每个 id 中的每个数字在此表中添加一行。
  2. 在此表上创建索引number
  3. select table.* from table where id in (select id from helper where number = 23)
于 2013-06-16T19:25:50.890 回答
0

你可以用这个

SELECT name ,`from`, find_in_set('4' , REPLACE(`from`, ';', ',')) as the_place_of_myval FROM reservation 
having the_place_of_myval != 0
  • 注意:在我的查询中,我正在搜索编号为 4 的字符串

demo 这里 在我的演示中有两个例子。

于 2013-06-16T20:00:50.360 回答