oracle行转列,decode 等用法

时间:2021-10-01 11:10:33

  DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。

  语法:

DECODE(control_value,value1,result1[,value2,result2…][,default_result])

  

  control _value试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。

  value1是一组成序偶的数值。如果control _value返回值与之匹配成功,则相应的结果result1将被返回,反之就与下个序偶相比较.

  如果对应一个空的返回值,可以使用关键字NULL于之对应

  result1 是一组成序偶的结果值。

  default_result 未能与任何一个值匹配时,函数返回的默认值。

  示例:

 decode(t.index_id, 'XS01010001', md_value, null)

  当index_id 为 XS01010001时,返回md_value的值,否则返回null。

  需要做比较判断时。

SELECT DECODE( SIGN(5 -6), 1 'Is Positive', -1, 'Is Nagative', 'Is Zero')

等价于CASE

SELECT CASE SIGN(5 - 6)

  WHEN 1 THEN 'Is Positive'

  WHEN -1 THEN 'Is Nagative'

  ELSE 'Is Zero' END

  FROM DUAL