当前位置: 首页 > 面试题库 >

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

陆烨磊
2023-03-14
问题内容

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

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

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


问题答案:

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

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

但是find_in_set也可以:

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


 类似资料:
  • 问题内容: 我的数据库中有一个表,如下所示: 我需要创建一个SELECT语句,该语句在’mgroup_others’逗号分隔列表中指定整数的位置选择所有成员。因此,例如,我编写了一条SQL语句,该语句将选择’mgroup_others’包含‘10’的所有成员,并且它将返回成员1、2和3但不返回成员4,因为10不在该字段中。任何帮助将不胜感激!谢谢。我也是用PHP编写的。 问题答案: 由于是列,如果

  • 问题内容: 这是我的表结构: 我需要拆分该列,并希望通过一个简单的sql查询来做到这一点,因为我不知道如何使用函数,并且希望将其保持简单。 这是我已经发现的: 但这仅输出 有没有一种方法来拆分一切从到,,等? 提前致谢。 问题答案:

  • 问题内容: 我有一个像 我想把它分成那些字符串 如果我简单地打电话给我,那么在修剪之后我会得到不同的结果,因为在某些字符串中,例如,仍然有一个逗号。但我不想放在方括号中。有解决这个问题的优雅方法吗? 问题答案: 假设和没有嵌套和未转义。您可以使用以下方式进行拆分: 正则演示 如果逗号后面没有非圆括号和,则将匹配逗号,从而忽略和中的逗号。

  • 问题内容: 我有以下表格: 过滤器 使用者 我想运行以下选择 我想收到 但是我什么也没收到。 问题在于该字段是文本,因此“ in select”返回的内容类似于“ 1、2、3”(带有分号),因此 in 找不到任何值。 是否可以进行强制转换或将字符串更改为数组的选项? 问题答案: 最好规范化您的架构,不要以逗号分隔列表的形式存储关系,而是为此创建一个联结表,以维护用户和过滤器之间的 m:m 多对多关

  • 本文向大家介绍MySQL查询返回分隔符后的子字符串?,包括了MySQL查询返回分隔符后的子字符串?的使用技巧和注意事项,需要的朋友参考一下 用于在定界符后返回值。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 这是在定界符后返回子字符串的查询。 输出结果 这将产生以下输出-

  • 问题内容: 我有从.net应用程序A,B,C,D,E,F获取的字符串, 我想写一个SQL选择语句像 这在t-SQL中将不起作用,因为它使用不将值分开的一个字符串。有什么办法可以做到这一点? 问题答案: 它认为最简单的方法是动态SQL生成: