如何在mysql查询中仅应用FIND WHOLE WORD

时间:2016-03-20 16:03:10

标签: mysql

样本表和记录如下: sample

如何选择那些记录只包含“2”(“23”,“22”......不计算)??? as,预期结果集是{1,2,3}

2 个答案:

答案 0 :(得分:1)

首先,您的数据格式非常糟糕。您将数字列表存储在单个字段中。以下是为什么这是一个坏主意的一些原因:

  • 将数字存储为字符串是一个坏主意。
  • 在一个列中存储多个值是一个坏主意。
  • 不宣布外键关系是一个坏主意。
  • 关系数据库在字符串操作方面不是很擅长,因此将值存储为字符串是一个坏主意。
  • 此类查询(一般情况下)无法使用索引进行优化,这是另一个糟糕的主意。

因此,您的数据结构是坏的,坏的,坏的,坏的,坏主意。您需要了解联结表以及在关系数据库中存储列表的正确方法。

那就是说,有时我们会被其他人的糟糕设计决定所困扰。如果是这种情况,您可以使用find_in_set(),一个特定于MySQL的函数:

where find_in_set(2, field) > 0

答案 1 :(得分:0)

您可以使用REGEX创建自己的查询,以下代码取自mysql官方文档:

SELECT * FROM table WHERE field REGEXP '^2$';

Here is the link to the documentation