首页 > 解决方案 > Oracle SQL 三元运算符或函数?

问题描述

是否有像三元运算符或函数这样的简单 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'
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'

如果有更简单、更短的语法我想知道。

标签: sqloracleif-statementconditional-operatororacle19c

解决方案


您可以使用以下CASE表达式LIKE

SELECT *
FROM   my_table
WHERE  CASE WHEN my_col LIKE '%something%' THEN 'Y' ELSE 'N' END = 'Y';

DECODEINSTR

SELECT *
FROM   my_table
WHERE  DECODE( INSTR( my_col, 'something' ), 0, 'N', 'Y' ) = 'Y';

或者只是简单地使用LIKE

SELECT *
FROM   my_table
WHERE  my_col LIKE '%something%';

INSTR

SELECT *
FROM   my_table
WHERE  INSTR( my_col, 'something' ) > 0;

REGEXP_LIKE

SELECT *
FROM   my_table
WHERE  REGEXP_LIKE( my_col, 'something' );

db<>在这里摆弄


推荐阅读