在 SQL 中,我(很遗憾)经常不得不使用“ LIKE
”条件,因为数据库违反了几乎所有的规范化规则。我现在无法改变。但这与问题无关。
此外,我经常使用 WHERE something in (1,1,2,3,5,8,13,21)
类的条件来提高我的 SQL 语句的可读性和灵活性。
有没有可能在不编写复杂的子选择的情况下将这两件事结合起来?
我想要像 WHERE something LIKE ('bla%', '%foo%', 'batz%')
这样简单的东西,而不是这样:
WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'
我在这里与 SQl Server 和 Oracle 合作,但我很感兴趣,如果这在任何 RDBMS 中都是可能的。
原文由 selfawaresoup 发布,翻译遵循 CC BY-SA 4.0 许可协议
SQL 中没有 LIKE 和 IN 的组合,更不用说 TSQL (SQL Server) 或 PLSQL (Oracle)。部分原因是因为全文搜索 (FTS) 是推荐的替代方法。
Oracle 和 SQL Server FTS 实现都支持 CONTAINS 关键字,但语法仍然略有不同:
甲骨文:
SQL 服务器:
您要查询的列必须是全文索引。
参考: