MySQL 查询在逗号分隔的字符串中查找值

2023-04-02数据库问题
1

本文介绍了MySQL 查询在逗号分隔的字符串中查找值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我的表 SHIRTS 中有一个字段 COLORS (varchar(50)),它包含一个逗号分隔的字符串,例如 1,2,5,12,15,.每个数字代表可用的颜色.

I have a field COLORS (varchar(50)) in a my table SHIRTS that contains a comma delimited string such as 1,2,5,12,15,. Each number representing the available colors.

当运行查询 select * from shirts where colours like '%1%' 以获取所有红色衬衫(颜色 = 1)时,我还会得到颜色为灰色( = 12) 和橙色 (=15).

When running the query select * from shirts where colors like '%1%' to get all the red shirts (color=1), I also get the shirts whose color is grey (=12) and orange (=15).

我应该如何重写查询,以便仅选择颜色 1 而不是所有包含数字 1 的颜色?

How should I rewrite the query so that is selects ONLY the color 1 and not all colors containing the number 1?

推荐答案

经典的方法是在左右添加逗号:

The classic way would be to add commas to the left and right:

select * from shirts where CONCAT(',', colors, ',') like '%,1,%'

但是find_in_set也有效:

select * from shirts where find_in_set('1',colors) <> 0

这篇关于MySQL 查询在逗号分隔的字符串中查找值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

按天分组的 SQL 查询
SQL query to group by day(按天分组的 SQL 查询)...
2024-04-16 数据库问题
77

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

在 Group By 查询中包含缺失的月份
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
2024-04-16 数据库问题
12