【发布时间】:2018-05-22 18:11:48
【问题描述】:
我了解 LIKE 不能在 here. 的内部 IN 子句中使用
我的表有 col1, col2, col3 列。
如何使用 LIKE 运算符在多个列中查找多个值。 目前我的查询是:
SELECT col1, col2, col3
FROM table_name
WHERE
(
Col1 = '38'
OR Col1 LIKE '%,38'
OR Col1 LIKE '%,38,%'
OR Col1 LIKE '38,%'
)
OR
(
col2 = '38'
OR col2 LIKE '%,38'
OR col2 LIKE '%,38,%'
OR col2 LIKE '38,%'
)
OR
(
col3 = '38'
OR col3 LIKE '%,38'
OR col3 LIKE '%,38,%'
OR col3 LIKE '38,%'
)
有没有办法让它更智能/更短/更快? 谢谢!
【问题讨论】:
-
是的。更正您的数据并停止在同一列中存储多个值,然后您不必费力地将其从逗号分隔值中解析出来。最初不花时间正确定义表的愚蠢决定的问题在于,您最终需要付出 100 倍的努力才能在需要时检索数据。然后变成
WHERE (col1 = '38' or col2 = '38' or col3 = '38')。 -
我同意你的观点,表格应该标准化。但现在我必须保持这种传统格式。