Oracle-如果绑定变量可以为空,那么可以将其放入In()子句中吗
在Oracle-如果绑定变量可以为空,那么可以将其放入In()子句中吗,oracle,where-clause,Oracle,Where Clause,在Oracle中,如果bind变量可以为空,是否可以将其放入In()子句中?询问,因为在SQL中,如果Oracle在()中看到,而其中没有任何数据,则会显示错误 ORA-00936: missing expression. 编辑:未能提及不能使用PL/SQL Edit2:也没有提到变量的格式是1,2,3或空字符串。空字符串不能替换为NULL。您可以这样做,它在语法上是正确的。 我希望你知道NULL不等于任何东西,即使是NULL(所以NULL = NULL不是真的,但是NULL),它会导致查询中
Oracle
中,如果bind变量可以为空,是否可以将其放入In()
子句中?询问,因为在SQL中,如果Oracle在()中看到
,而其中没有任何数据,则会显示错误
ORA-00936: missing expression.
编辑:未能提及不能使用PL/SQL
Edit2:也没有提到变量的格式是1,2,3或空字符串。空字符串不能替换为NULL。您可以这样做,它在语法上是正确的。 我希望你知道NULL不等于任何东西,即使是NULL(所以NULL = NULL不是真的,但是NULL),它会导致查询中的意想不到的结果,所以如果不影响性能 < P>,请考虑使用NVL函数:
declare
l_statement varchar2(32767);
begin
l_statement := 'select * from user_tables where table_name in (:a)';
execute immediate l_statement
using '';
end;
它不会在(null)中看到
?我认为这是不可能的。无论如何,谢谢。例如,var只能是1,2,3,或者从表中选择nothing(非null),其中的代码(nvl(,null))将导致errorDefine“nothing”-为什么不是null
?空字符串('
)和null
在Oracle中是相同的。如果查询中有一个绑定变量,那么它不会消失。也许你应该展示你的代码,这样我们就可以看到你真正的意思,以及到目前为止你遇到的任何错误。有一个PHP代码,它用1,2,3或不带引号的空字符串(既不是null,也不是带引号的空字符串“”)替换变量。我想这是不可能的。无论如何,谢谢你的努力,也很抱歉解释得不够好。这不是一个空列表,而是一个包含空字符串的列表。空字符串和null在Oracle中是一样的