MYSQL匹配csv关键字列

标签 mysql sql regex csv

<分区>

我按以下方式在用户表中记录

id    name     address    keywords
1     thompsan paris      10,20,30
2     samson   paris      10,20,30
3     Nilawa   paris      10,20,30
4     Nalama   paris      100,30,50
5     Nalama   paris      100,300,20

我需要获取关键字为 10 或 20 的用户。我写了这个查询:

SELECT * from User where keywords REGEXP '[[:<:]]10|20[[:>:]]' 

它没有给我预期的输出。它应该过滤 id 10 或 20,并给我记录 1、2、3、5 的输出。记录 4 在这里不匹配。

为什么它不起作用?有更好的方法吗?

最佳答案

试试这个,

SELECT  *
FROM    user
WHERE   FIND_IN_SET('10', keywords) > 0 OR
        FIND_IN_SET('20', keywords) > 0 

FIND_IN_SET是 MySQL 的内置函数

关于MYSQL匹配csv关键字列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595251/

相关文章:

javascript - 否定前瞻混淆

php - AJAX 不返回任何数据

php - 如何让这个 UPDATE 只在这个 while 循环中工作?

sql - 数据库规范化问题

sql - 在 SQL 中复制一行?

javascript - 负面回顾 JavaScript

php mysql 在标签之间提取文本

php - 如何从我的 WAMP 环境迁移到使用 MSSQL?

mysql - 用户地理位置数据库设计

mysql - Sql 查询使用正则表达式