SQL - Where like statement

Fle*_*xer 4 php mysql sql database

我有一个包含两列的表(id,numberslist).

如何获得numberlist 中具有完全" 1 "的所有行(在本例中为id = 2)

什么是sql语句?


id | numberslist

1 | 11,111
2 | 1,2,3


这不起作用:

$sql = "SELECT * FROM mytabelle WHERE numberslist LIKE '%1%'";
Run Code Online (Sandbox Code Playgroud)

我知道以这种方式列出所有数字是一个糟糕的数据库设计,但它不可更改.

Bil*_*win 7

为此,MySQL在其正则表达式语法中支持"字边界"模式.

WHERE numberlist REGEXP '[[:<:]]1[[:>:]]'
Run Code Online (Sandbox Code Playgroud)

您也可以使用FIND_IN_SET():

WHERE FIND_IN_SET('1', numberlist) > 0
Run Code Online (Sandbox Code Playgroud)

也就是说,我同意其他答案中的评论,即在这样的字符串中存储以逗号分隔的列表并不是一个好的数据库设计.请参阅我的答案是否在数据库列中存储逗号分隔列表真的那么糟糕?