带有 if 语句的 Oracle 数据库查询
Posted
技术标签:
【中文标题】带有 if 语句的 Oracle 数据库查询【英文标题】:Oracle db query with if statement 【发布时间】:2018-07-02 08:10:06 【问题描述】:我对此查询有疑问。
SELECT
codigo clave, descrip valor
CASE
WHEN codigo IS NOT NULL
THEN SELECT codigo clave, codigo || ' - ' || descrip valor
ELSE
CASE
WHEN codigo IS NULL
SELECT codigo clave, descrip valor
END
我需要将code
和"-"
连接到这样的东西
但是,在某些情况下,代码的值是空的,它会这样打印:
选项 选项【问题讨论】:
您能否发布一些示例数据和所需的结果?这将阐明您的需求并帮助人们帮助您。 你的代码在语法上不正确,所以你的问题真的很难理解。 【参考方案1】:您可以使用函数NVL2
来构建您的查询。它有三个参数
NVL2(expr1, expr2, expr3)
如果 expr1 不为 NULL,则返回 expr2,如果为 NULL,则返回 expr3。
例如,NVL2(codigo,'codigo-','')
仅在 codigo 不为空时添加“-”。
事情比较复杂,你可以使用CASE
语句,比如这样:
SELECT CASE
WHEN codigo IS NOT NULL and descrip IS NOT NULL THEN codigo||'-'||descript
WHEN codigo IS NOT NULL and descrit IS NULL THEN codigo
WHEN codigo IS NULL ANd descrip IS NOT NULL THEN descrip
ELSE NULL
END as myresult
FROM mytable;
【讨论】:
以上是关于带有 if 语句的 Oracle 数据库查询的主要内容,如果未能解决你的问题,请参考以下文章
oracle语句的级联问题,这个语句e.mgr=m.empno(+) 谁可以给我讲讲这个是啥意思还带有(+)详细解答哦!