检查其中一个数据库行中是否存在值

时间:2016-05-28 19:46:01

标签: mysql sql database select

我正在寻找一种方法来检查页面列的其中一行中是否存在值。

例如,如果要检查值是否为' 45'在场?

 Id | page     |
 ---------------
 1  | 23       |
 ---------------
 2  |          |
 ---------------
 3  | 33,45,55 |
 ---------------
 4  | 45       |
 ---------------

2 个答案:

答案 0 :(得分:2)

find_in_set功能正是您所需要的:

SELECT *
FROM   mytable
WHERE  FIND_IN_SET('45', page) > 0

答案 1 :(得分:1)

您不应将值存储在列表中。在这种情况下尤其如此:

  • 值应存储在正确的数据类型中。您将数字存储为字符。
  • 应正确定义外键关系。
  • SQL没有非常好的字符串处理功能。
  • 生成的查询无法使用索引。
  • SQL为列表提供了很好的数据类型,称为。在这种情况下,您需要一个联结表。

有时,你会遇到其他人非常糟糕的设计决策。在这种情况下,您可以按照Mureinik的建议使用find_in_set()