SQL中是否有“like”和“in”的组合?在SQL i中(遗憾的是)经常不得不使用“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中都是可行的。在SQL i中(遗憾的是)经常不得不使用“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中都是可行的。
3 回答
弑天下
TA贡献1818条经验 获得超8个赞
SQL中不存在like&IN的组合,而在TSQL(SQLServer)或PLSQL(Oracle)中则更没有这种组合。部分原因是因为全文搜索(FTS)是推荐的选择。
Oracle和SQL Server FTS实现都支持CONSE关键字,但语法仍然略有不同:
甲骨文:
WHERE CONTAINS(t.something, 'bla OR foo OR batz', 1) > 0
SQLServer:
WHERE CONTAINS(t.something, '"bla*" OR "foo*" OR "batz*"')
波斯汪
TA贡献1811条经验 获得超4个赞
SQL> create table mytable (something) 2 as 3 select 'blabla' from dual union all 4 select 'notbla' from dual union all 5 select 'ofooof' from dual union all 6 select 'ofofof' from dual union all 7 select 'batzzz' from dual 8 /Table created.
SQL> select something 2 from mytable 3 where something like 'bla%' 4 or something like '%foo%' 5 or something like 'batz%' 6 /SOMETH------blabla ofooof batzzz3 rows selected.
SQL> select something 2 from mytable 3 where regexp_like (something,'^bla|foo|^batz') 4 /SOMETH------blabla ofooof batzzz3 rows selected.
但是.。
添加回答
举报
0/150
提交
取消