decode函数的几种用法详解

SQL>colcolumn_nameformata20SQL>selectcolumn_name,column_id2fromuser_tab_columns3wheretable_name=T4orderbydecode(column_id,1,null,2,null,3,null,column_id);COLUMN_NAMECOLUMN_ID\\——————————C44C55C22C11C33但是当表的列数大于10的时候就会混乱了。

使用decode判断字符串是否一样decode(value,if1,then1,if2,then2,if3,then3,…,else)含义为IF条件=值1THENRETURN(value1)ELSIF条件=值2THENRETURN(value2)……ELSIF条件=值nTHENRETURN(value3)ELSERETURN(default)ENDIF示例:

selectdecode(sign(var1-var2),-1,var1,var2)fromdualsign函数根据某个值是0、正数还是负数,分别返回0、1、-1示例:

工资大于5000为高薪,工资介于3000到5000为中等,小于3000为低薪示例:

4、利用decode实现表或者视图的行列转换

decode(expression,search_1,result_1,search_2,result_2,….,search_n,result_n,default)decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

**DECODE**(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)****DECODE(字段,比较1,值1,比较2,值2,…..,比较n,值n缺省值)该函数的含义如下:IF条件=值1THENRETURN(翻译值1)ELSIF条件=值2THENRETURN(翻译值2)……ELSIF条件=值nTHENRETURN(翻译值n)ELSERETURN(缺省值)ENDIFdecode()函数使用技巧·软件环境:1、WindowsNT4.0+ORACLE8.0.42、ORACLE安装路径为:C:/ORANT·使用方法:1、比较大小selectdecode(sign(变量1-变量2),-1,变量1,变量2)fromdual;–取较小值sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1例如:变量1=10,变量2=20则sign(变量1-变量2)返回-1,decode解码结果为变量1,达到了取较小值的目的。

以上文档测试并整理自互联网官方参考文档:**Oracle®Database**SQLLanguageReference11_g_Release2(11.2)**E17118-04**5FUNCTIONSàDECODE,8)‘>

减小字体

增大字体在数据库开发的过程当中,有很多时候需要将行转换成列或者将列转换成行来显示数据,而往往我们在建立表结构时不能根据显示的要求来保存数据,于是乎只能在保存数据之后做一些必要的操作(比方说:建立视图等)来达到显示的目的。