2016-10-13 31 views
1

我有看起来像这样的匹配部分(SQL等)在MySQL

1,13,15 

如果我尝试做一个搜索,找到所有的行比包含“1”,那么它采取的所有字段行中有1,并且不仅是行,说1,[东西],还有“11”,“13”等。

我试过了一个类似声明和通配符,但没有运气。

+0

什么是dbms被使用? –

+0

到目前为止您尝试了什么? “LIKE”? – Sami

+0

您的意思是MySQL然后编辑您的Q标签并将MySQL添加到标签 – Sami

回答

0

您可以搜索“1”,或“1”或“1”。

1

如果你正在使用MySQL,你可以使用regexp来检查这些值

where column_name regexp '^1,|,1,|,1$|^1$' 
+0

这似乎工作,非常感谢 –

0

如果你的领域是'1,13,15'将其更改为',1,13,15,'

和搜索到LIKE '%,1,%'

所以根据您的分贝你应该尝试这样的事情

SELECT * 
FROM yourTable 
WHERE ',' + yourField + ',' LIKE '%,' + @search + ',%' 
0

您是否尝试过:

select rows 
from table 
where field contains '1,' 

+0

对不起 - 不是我最后输入的内容。 –

+0

从表中选择行,其中left(field,2)='1', –

+0

结果是否总是像您指示的那样排序好,或者它们可能是不符合顺序的,比如'3,2,1,11'? –

0

如果您使用的是MS SQL Server,则应该使用LIKE '%1%'

1

当你说“1 *”时,它会发现所有有一个之后的东西。只是缩小了搜索和检索算法:

field LIKE "1,%" OR field LIKE "%,1,%" OR field LIKE "%,1" OR field = "1" 
+0

如果'1'在中间会发生什么? –

+0

如果文本字段只是“1”,会发生什么情况没有更多的元素,所以没有'','? –

+0

再次更新。 ;) –

3

如果你使用MySQL,使用FIND_IN_SET,不LIKE

WHERE FIND_IN_SET('1', columnname) 

但最好的解决方案是规范化您的模式,因此您在列中没有以逗号分隔的值。