【发布时间】:2013-05-20 18:40:45
【问题描述】:
我有一个包含以下值的表:
id | value |
-----------------------
1 | 1,2,5,8,12,20 |
2 | 11,25,26,28 |
-----------------------
现在我想搜索一些逗号分隔的 ID,例如来自上述值列的“1,3,6,7,11”,例如
SELECT id FROM tbl_name
WHERE value REGEXP '*some reg exp goes here containing 1,3,6,7,11*'
LIMIT 1,0;
SELECT id FROM tbl_name
WHERE value REGEXP '*some reg exp goes here containing 3,6,27,15*'
LIMIT 1,0;
第一个查询应该返回 1 而第二个应该返回 NULL
我是正则表达式的新手,谁能帮忙。谢谢
【问题讨论】:
-
只是为了确保我理解,它应该返回
1,因为至少有一个数字与具有该 ID 的行匹配? -
顺便说一句,不要指望使用这种数据格式的查询会有好的性能,它将无法使用任何形式的索引,并且总是需要读取整个表来回答问题。换句话说,如果有超过几百行数据,对于实时渲染网页是没有好处的。
-
不应该是该行的 id,是的,如果至少有一个数字匹配,则返回。
-
数字是按数字顺序存储的,搜索词中的数字也是按数字顺序存储的吗?