【问题标题】:check if value is present in one of the database rows检查值是否存在于数据库行之一中
【发布时间】:2016-09-26 22:57:26
【问题描述】:
我正在寻找一种方法来检查页面列的某一行中是否存在值。
例如是否应该检查值 '45' 是否存在?
Id | page |
---------------
1 | 23 |
---------------
2 | |
---------------
3 | 33,45,55 |
---------------
4 | 45 |
---------------
【问题讨论】:
标签:
mysql
sql
database
select
【解决方案1】:
find_in_set 函数正是您想要的:
SELECT *
FROM mytable
WHERE FIND_IN_SET('45', page) > 0
【解决方案2】:
您不应将值存储在列表中。在这种情况下尤其如此:
- 值应以正确的数据类型存储。您将数字存储为字符。
- 应正确定义外键关系。
- SQL 没有很好的字符串处理功能。
- 生成的查询不能使用索引。
- SQL 有一种很棒的列表数据类型,称为表。在这种情况下,您需要一个联结表。
有时,您会被其他人非常糟糕的设计决策所困扰。在这种情况下,您可以按照 Mureinik 的建议使用 find_in_set()。