我在函数中使用SQL查询。现在我想将参数值传递给SQL where子句,前提是param_value不是空的,如下所示。
select *
from cms_tab
where case when param_val <> '' then
col1 like '%' || param_val || '%'
end
如何实现这一目标?
如果参数值不为null,那么我想使用like(%)来获取记录。
答案 0 :(得分:2)
在Oracle中检查字符串是否为“空”的唯一安全方法是检查它是否<http:request-config name="American_HTTP_Request_Configuration" protocol="HTTP" host="localhost" port="8181" responseTimeout="300000" doc:name="HTTP Request Configuration"/>
; here你找到了一个问题的例子,你可以用错误的方式检查“空字符串”。
此外,IS [NOT] NULL
不是正确的选择;你最好添加一些布尔逻辑。
如果我理解的话,你想要在参数为“空”时选择所有行,或者如果参数不是“空”则只选择匹配的行;这可能是一种方式:
CASE
<强>测试强>
create or replace procedure testNull ( param_val IN varchar2) is
vCount number;
begin
select count(*)
into vCount
from cms_tab
where param_val is null
or col1 like '%' || param_val || '%' ;
dbms_output.put_line('vCount = ' || vCount);
end;
答案 1 :(得分:-1)
select * from cms_tab
where
param_val is null
or col1 like '%'||param_val||'%'