2016-05-28 93 views
4

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

例如,如果应该检查值'45'是否存在?

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

回答

2

find_in_set功能正是你要寻找的:

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

This Works!谢谢 – user759235

1

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

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

有时候,你会被其他人的糟糕的设计决定所困住。在这种情况下,您可以使用Mureinik建议的find_in_set()

相关问题