oracle中SQL语句中对字段判断对其进行赋值特有函数用法介绍

我们在orcal中写查询sql语句时,往往会遇到判断某个字段的值并对其进行转码成我们需要的值,例如:数据库中字段“是否贵宾客户”存的值为0、1,0表示是,1表示否,在我们查询时如果不在sql中进行转码的话。可能在java中需要对其遍历重新赋值,而这就增加我们的代码量,试想如果我们在sql查询语句就对其进行转码,这样不就很方便了吗?以下就是关于sql中针对字段判断对其进行相应的赋值的一个简单小结,希望能帮助大家,可能有不足的地方,也欢迎大家对其进行补充哈!

  • NVL用法

nal(表达式1,表达式2)

它是一个空值转换函数,该函数的目的是把一个空值(null)转换成一个实际的值。具体为判断表达式1是否为空,若为空则取表达式2的值,否则取表达式1的值。其表达式的值可以是数字型、字符型和日期型,但需要注意的是表达式1和表达式2的数据类型必须为同一个类型。

nvl2(表达式1,表达式2,表达式3)

其判断的是表达式1若为空返回表达式3,不为空返回表达式2.

  • decode
    这个方法主要作用是将查询结果翻译成其他值,如:

decode(columnValue,值1,翻译值1,值2,翻译值2,…值n,翻译值n,其他值)

其中columnValue为从数据库表中查询出来的值,若columnValue=值1,则查询出的结果显示为值1,若columnValue=值2,则查询出的结果显示为值2…若columnValue=值n,则查询出的结果显示为值n,若都不是则返回“其他值”(其中其他值可以是columnValue,也可以是你自己定义的值)
另外补充一点decode中的columnValue可以定义nvl函数,具体通式如下:

decode(nal(表达式1,表达式2),值1,翻译值1,值2,翻译值2,…值n,翻译值n,其他值)

  • case… when … then … else … end 方法
    具体写法如下:

case columnValue
when 值1 then 翻译值1
when 值1 then 翻译值1

when 值1 then 翻译值1
else 其他
end

此方法与decode方法类似,但与decode方法相比此方法相对繁琐,因此在两方法都能用时,建议采用decode来进行判断赋值。

你可能感兴趣的:(数据库)