匹配部分字符串(SQL LIKE)在MySQL中

时间:2016-10-13 19:19:23

标签: php mysql sql

我有一个看起来像这样的字段

1,13,15

如果我尝试进行搜索以查找包含“1”的所有行,那么它将获取所有内部为1的行,而不仅是表示1,[something]的行,还包括“11”,“13 “等等。

我尝试过类似的声明和通配符,但没有运气。

7 个答案:

答案 0 :(得分:3)

如果您使用的是MySQL,请使用FIND_IN_SET,而不是LIKE

WHERE FIND_IN_SET('1', columnname)

但最好的解决方案是规范化您的架构,以便在列中没有逗号分隔值。

答案 1 :(得分:1)

如果您使用的是MySQL,可以使用regexp来检查这些值

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

答案 2 :(得分:1)

当你说" 1 *"它找到了那之后有一个和任何东西的东西。只需缩小搜索范围并搜索:

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

答案 3 :(得分:0)

您可以搜索" 1,"或" 1"或",1"。

答案 4 :(得分:0)

如果您的字段为'1,13,15',请将其更改为',1,13,15,'

以及您对LIKE '%,1,%'的搜索

因此,根据您的数据库,您应该尝试这样的事情

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

答案 5 :(得分:0)

你试过了吗?

select rows
from table
where field contains '1,'

答案 6 :(得分:0)

如果您正在使用MS SQL Server,则应使用LIKE '%1%'