php - 匹配 mysql select 查询中的 delimeter(|) 分隔值字段

标签 php mysql database sql-like

在我的 mysql 表中,其中一个字段存储了类似 (1|2|3) 的值。

  id   Skills
 ----  --------
   1   1|2|3|5
   2     2|4|5
   3    4|6|3
   4    5|2|3|1

我想根据匹配的技能搜索并列出 ID。如果我想列出包含3的技能的ID,我必须列出ID1,3,4。就像如果我想列出包含1,5(1或5或两者)(如多个值1,4,3)的技能的ID,那么我想列出1 ,2,4(我也想列出 2)。任何帮助都将不胜感激。

提前致谢。

最佳答案

使用FIND_IN_SET

select id
from your_table
where find_in_set('3', replace(skills, '|',',') > 0

select id
from your_table
where find_in_set('3', replace(skills, '|',',')) > 0
or find_in_set('5', replace(skills, '|',',')) > 0

但你实际上应该改变你的数据库结构。始终将单个值存储在列中以避免此类问题!

关于php - 匹配 mysql select 查询中的 delimeter(|) 分隔值字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397101/

相关文章:

以制表符终止的 MySQL 字段

mysql - UPDATE INNER JOIN 影响 0 行

php - 根据mysql数据在textarea中提供反馈信息

php - 将数千条相关记录导入到 Rails 应用程序中?

php - 如何将表单信息从网站发送到电话号码的消息收件箱?

javascript - 如何在共享主机上安装没有 npm 的 gulp?

PHP Heredoc 字符串规则

PHP-MYSQLI : My login scripts logs direct users into the same page

android - Android Service 和 Content Provider 的区别

python - 大型文本数据库 : Convert to SQL or use as is