sql - 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'
如果有更简单、更短的语法我想知道。
解决方案
您可以使用以下CASE
表达式LIKE
:
SELECT *
FROM my_table
WHERE CASE WHEN my_col LIKE '%something%' THEN 'Y' ELSE 'N' END = 'Y';
或DECODE
和INSTR
:
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<>在这里摆弄
推荐阅读
- python - 如何让 Python argparse 接受一个“-a”标志来代替位置参数?
- vb.net - 对文件路径进行硬编码时,如何考虑不同的用户配置文件?
- git - 当git历史包含私人信息时如何使源代码开放?
- c# - 用于作业的 Kubernetes 服务帐户
- reactjs - Normalizr Union 缺少嵌套项的 id
- mysql - Node JS MYSQL 查询未运行,但未记录错误
- javascript - HtmlUnit 登录尝试导致我无法通过的奇怪页面。“脚本已禁用。单击提交继续”
- java - 无法加载类但可以导入工作正常
- python - 如何在python中拆分地址?
- r - 在 R 中,我需要将一组数字除以另一列中的特定值,然后通过分组变量重复该操作