use*_*535 6 sql oracle if-statement conditional-operator oracle19c
是否有像三元运算符或函数这样的简单 Oracle 语法?
这些工作:
with
function qry(v in varchar2) return varchar2 is
begin
return owa_util.ite(v like ('%' || lower('something') || '%'),'Y','N');
end;
select * from my_table where qry(my_col) = 'Y'
Run Code Online (Sandbox Code Playgroud)
with
function qry(v in varchar2) return varchar2 is
begin
return case when v like('%' || lower('something') || '%') then 'Y' else 'N' end;
end;
select * from my_table where qry(my_col) = 'Y'
Run Code Online (Sandbox Code Playgroud)
如果有更简单、更短的语法我想知道。
您可以使用CASE
以下表达式LIKE
:
SELECT *
FROM my_table
WHERE CASE WHEN my_col LIKE '%something%' THEN 'Y' ELSE 'N' END = 'Y';
Run Code Online (Sandbox Code Playgroud)
或DECODE
和INSTR
:
SELECT *
FROM my_table
WHERE DECODE( INSTR( my_col, 'something' ), 0, 'N', 'Y' ) = 'Y';
Run Code Online (Sandbox Code Playgroud)
或者只是简单地使用LIKE
:
SELECT *
FROM my_table
WHERE my_col LIKE '%something%';
Run Code Online (Sandbox Code Playgroud)
INSTR
:
SELECT *
FROM my_table
WHERE INSTR( my_col, 'something' ) > 0;
Run Code Online (Sandbox Code Playgroud)
或者REGEXP_LIKE
:
SELECT *
FROM my_table
WHERE REGEXP_LIKE( my_col, 'something' );
Run Code Online (Sandbox Code Playgroud)
db<>在这里摆弄