【发布时间】:2018-03-13 21:59:48
【问题描述】:
考虑这个 SQL 表
id | name | numbers
------------------------
1 | bob | 1 3 5
2 | joe | 7 2 15
这个查询返回整个表作为它的结果:
SELECT * FROM table WHERE numbers LIKE '%5%'
是否有一个 SQL 运算符使其仅返回第 1 行(仅返回编号为 5 的列)?
【问题讨论】:
-
不要将数字存储在分隔字符串中。这是一个虚伪。使用单独的表格,每个“名称”和“编号”一行。
-
SELECT * FROM table WHERE numbers LIKE '% 5 %'
-
如果您需要一次性使用
FIND_IN_SET和REPLACE,但如果您每次都需要使用,请遵循@GordonLinoff 的建议。 -
@GordonLinoff 我理解这是虚假的,你的建议更好。如果我使用
-作为字符串分隔符,例如-1-3-5-、LIKE '%-5-%'有效。它仍然是一团糟,但我只想知道这种虚假方法是否存在任何重大问题?我通常想坚持一张桌子,因为这是一个简单的应用程序。