mysql - 如何检查mysql中的字段是否包含特定值?

标签 mysql select

表字段类型字符串可以包含逗号分隔的 int 值,例如“1,6,2,13”或“3,9,2”或“1,3”

如何选择包含以下内容的所有条目: “3”没有得到“13”?

一个select * from table where field like '%3%'在这种情况下将不起作用。 也不是like '%,3,%

目前我正在尝试所有组合: '3,%' 、 '%,3' 、 '%,3,%' ,但我想知道是否有更简单的方法。

最佳答案

LIKE 不适用于精确搜索,最好使用 REGEX 来获得精确搜索

SELECT * FROM table WHERE 
    field  REGEXP '[[<:]]3[[:>]]'

或者您也可以使用FIND_IN_SET()函数

SELECT * FROM tblname WHERE 
    FIND_IN_SET('3', field ) > 0

注意:如果标签不是对称逗号分隔,FIND_IN_SET() 函数将无法正常工作,如果标签之间有空格,则会产生问题

关于mysql - 如何检查mysql中的字段是否包含特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28314969/

相关文章:

mysql - mysql_query 的更新语法有问题

perl - 如何进行正确的 IO::Select 错误处理?

mysql - SQL:如何多次连接同一个表?

r - 使用 dplyr 选择并绘制最高频率

mysql - 我的 SELECT 和其他两个查询运行缓慢

mysql - 如何在 MySQL 中对行求和

php - 子父关系递归表

php - 如何将核心 php 用于 Codeigniter Controller 文件?

php - 这是将表单数据插入 MySQL 数据库的安全方法吗?

php - 使用 php 和 mysql 存储和选择时间/日期的最佳实践?