php - MySQL使用LIKE命令在分号之间查找

标签 php mysql

这是我的数据

385_white   99  swarovski   12  black;blue
386_white   99  swarovski   12  black;blue;green
387_white   99  swarovski   12  yellow;green
389_white   99  swarovski   12  white;silver
385_white   99  swarovski   12  silver

这是一个示例查询

SELECT *  FROM `products` WHERE `category` LIKE 'swarovski' AND `colours` LIKE 'silver'

返回的结果为空。如果用户想要黑色,那么它应该返回前两条记录。我无法编辑 color;color;color 格式。这时候是收费的。

最佳答案

像这样的非规范化架构的代价是您必须对查询做更多工作以确保准确匹配:

SELECT *  
FROM `products` 
WHERE `category` = 'swarovski' 
AND (
    `colours` = 'silver' 
    OR `colours` LIKE 'silver;%' 
    OR `colours` LIKE '%;silver;%' 
    OR `colours` LIKE '%;silver' 

)

SQL Fiddle Example

关于php - MySQL使用LIKE命令在分号之间查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675882/

相关文章:

php - 防止使用 SELECT...LOCK IN SHARE MODE 的 php 应用程序中的 mysql 死锁

python - Turbogears2 与 MySQL 数据库不更新多线程中的表

MYSQL - 以 DESC 顺序按 Id 排序,按 X 分组

mysql - 如何使用mysql从字符串中删除双引号

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 显示来自 DB php/MySQL 的项目数组

php - 通过php连接数据库

php - 从 MySQL 反射(reflect) PHP 中的子记录

mysql - 不正确的整数值 : '' for column

mysql - 用于从具有不同外键的单个表中检索匹配值对的计数的 SQL 查询?