如何简化SQL语句中的OR条件?

Francis Zhu

我有以下 Oracle 查询来返回书名列表。

Select bookName From Books
       Where bookName = "A" 
             OR bookName = "B"
             OR bookName = "C"

我的想法:

与其重复OR bookName = "blah"不如让它简单到只有一行语句但逻辑相同。

首先,使用以下值创建一个bookName.txt

  • 一种
  • C

然后在SQL语句中,把这本书名作为参数,

Select bookName From Books
       Where bookName= "$values"

我不确定我们是否可以通过这种方式实现它。我想这样做的原因是我有数百个书名,我不希望sql语句超长。有人可以给我指明方向吗?

生锈

如果值的数量有限,您可以使用 IN。您的示例如下所示:

Select bookName From Books
   Where bookName in ('A','B','C');

如果您想使用绑定变量并最多选择 10 本书(这里的限制很重要,并且数量不能很大),您可以使用以下内容:

Select bookName From Books
   Where bookName in (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10);

在这种情况下,您绑定前 N 个参数以设置已知值,其余参数等于 NULL。

如果需要不限制输入值的数量,则可以使用临时表;用简单的插入预先填充它,然后在你的 sql 中使用它。

-- create once your temp table. It is not part of your PL/SQL code.
create global temporary table tmp$books(book_name);


-- in your procedure calling sql prepopulate temp table with values:
LOOP
  -- looping through your values
  insert into tmp$books values(:p); 
END LOOP;


Select b.bookName 
  From Books b
  inner join tmp$books t
     on b.book_name = t.book_name
;

最后提交/回滚以删除所有临时值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何简化SQL语句

来自分类Dev

如何在SQL case语句中使用> =条件?

来自分类Dev

如何在SQL UPDATE语句中使用IF条件?

来自分类Dev

如何使用多个或语句简化条件?

来自分类Dev

在SQL语句中构建动态where条件

来自分类Dev

在聚合的SQL语句中插入where条件

来自分类Dev

Where 子句中的 SQL Server 条件语句

来自分类Dev

简化条件语句[Perl]

来自分类Dev

如何从条件语句中检索EditText值

来自分类Dev

如何减少语句中的条件数?

来自分类Dev

如何在条件语句中退出脚本?

来自分类Dev

如何在 if 语句中包含多个条件?

来自分类Dev

if 语句中的多个条件如何工作

来自分类Dev

如何在SQL Server合并语句中为删除添加where条件

来自分类Dev

如何在DB2的SQL Merge语句中具有AND&OR条件

来自分类Dev

如何在 sql 语句中减少这种多个和-和或-条件?

来自分类Dev

简化SQL选择语句

来自分类Dev

简化SQL SELECT语句?

来自分类Dev

简化MS SQL语句

来自分类常见问题

如何简化在不同密钥上的重复条件语句?

来自分类Dev

Javascript:如何简化具有多个OR条件的if语句?

来自分类Dev

在if语句中减少条件

来自分类Dev

if语句中的OR条件链

来自分类Dev

车把的if语句中的条件

来自分类Dev

Foreach语句中的条件

来自分类Dev

IF语句中的多个OR或AND条件

来自分类Dev

在if语句中添加条件

来自分类Dev

Foreach语句中的条件

来自分类Dev

if语句中的布尔条件