oracle中使用解码函数的方法
解码(条件,值1,返回值1,值2,返回值2,…值n,返回值n,默认值)
这个函数的含义如下:
复制代码代码如下所示:
如果条件=值1,那么
返回(翻译值1)
elsif条件=价值2
返回(翻译值2)
…
elsif条件= n值,然后
返回(翻译值n)
其他的
返回(默认)
最后如果
解码(字段或字段操作,值1,值2,值3)
这个函数的结果是,当字段或字段的操作值等于1时,函数返回一个值为2,否则值为3。
当然,1的值,值2,值3也可以是表达式,这个函数使一些sql语句变得简单很多。
使用方法uff1a
1。比较大小
从双选择解码(符号1变量2),- 1,变量1,变量2);取一个较小的值
符号()函数返回0, 1和- 1,基于值为0,正或负。
例如:
变量1 = 10,变量2 = 20
符号(变量1变量2)返回到1,解码解码结果为变量的1,达到较小值的目的。
2。这个函数在SQL语句中使用,函数的引入如下:
解码功能类似于一系列嵌套三元运算符statements.base_exp是比较1,compare2相比,所以在转。如果base_exp比赛我比较项,则返回相应的值,如果一base_exp不匹配任何比较值,它返回到默认的价值评估。每个比较顺利,如果找到一个匹配,剩下的比较值(如果它仍然)不再是评价。一base_exp零等效为零比较值。如果需要的话,每个比较值转换为相同的数据类型作为第一比较值,这个数据类型是返回值的类型。
解码功能在实际开发中非常有用。
结合模式的功能,如何自动添加到1的主键的值,使0在前面
选择模式(解码(计数(计数),0,1,max(to_number(记录数)+ 1)),14,'0')从tetdmis记录数
复制代码代码如下所示:
选择解码(DIR,1,0,1)从a1_interval
目录的值是1到0,0到1。
我想打听一下班上男女学生的人数。
通常我们写这个:
复制代码代码如下所示:
从性别=男性的表格中选择计数(*);
从性别=女性的表格中选择计数(*);
如果你想出现并且有一个联盟,那就太麻烦了。
有了解码,只需要一句话。
复制代码代码如下所示:
选择解码(性别,男性,1, 0),解码(性别,女性,1, 0)从表
3,按顺序对字符列进行具体排序。
您也可以按顺序使用解码。
例如:表table_subject,有subject_name列。顺序是按语言的顺序、数量和外。在这一点上,你可以使用解码来完成的要求很容易。
复制代码代码如下所示:
SELECT * FROM table_subject顺序解码(subject_name,语言,1,数学,2,外语,3)。