Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有OR子句且只有一个参数的SQL查询_Sql_Database_Oracle - Fatal编程技术网

带有OR子句且只有一个参数的SQL查询

带有OR子句且只有一个参数的SQL查询,sql,database,oracle,Sql,Database,Oracle,我想知道是否有一种方法可以进行这样的查询(其中Z是一个变量) 只写入一次Z。更具体地说,我想这样做同样的查询 SELECT * FROM table t WHERE (t.X OR t.Y) = Z 我使用的是Oracle DB,当我尝试执行它时,它(显然)会给我一个错误,但我真的很喜欢在第二个查询中这样做 为了让你知道我的处境,X和Y都是VARCHAR2,我已经尝试了类似的方法 SELECT * FROM table t WHERE (t.X || t.Y) like '%Z%' 但是,不

我想知道是否有一种方法可以进行这样的查询(其中
Z
是一个变量)

只写入一次
Z
。更具体地说,我想这样做同样的查询

SELECT * FROM table t WHERE (t.X OR t.Y) = Z
我使用的是Oracle DB,当我尝试执行它时,它(显然)会给我一个错误,但我真的很喜欢在第二个查询中这样做

为了让你知道我的处境,
X
Y
都是VARCHAR2,我已经尝试了类似的方法

SELECT * FROM table t WHERE (t.X || t.Y) like '%Z%'

但是,不幸的是,它没有第一个准确。

您可以在中使用

WHERE Z IN (t.X, t.Y)
列可以位于
列表中的中,也可以位于常量中。

请这样尝试

SELECT * FROM table t WHERE (t.X like %Z% OR t.Y  like %Z% )

这绝对是正确的方法。这是一个我从未想到的解决方案,我不知道列可以位于IN的右侧,谢谢:)@GiacomoF.M。我记得很久很久以前,我也有同样的反应。请检查和语法描述。您的第一条SQL语句很好,为什么不使用它呢?因为我正在维护一个Java应用程序,在这种特定情况下,我更喜欢只更改查询,而不是添加更多的代码行。谢谢您的回答,但是按照您说的做会迫使我编写相同变量的两倍
SELECT * FROM table t WHERE (t.X like %Z% OR t.Y  like %Z% )