OracleDECODE函数的用法详解?
Oracle DECODE函数 使用方法: 1、比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; –取较小值 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 例如: 变量1=10,变量2=20 则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。 2、此函数用在SQL语句中,功能介绍如下: Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。
延伸阅读
python中encode函数含义?
decode英文意思是 解码,encode英文原意 编码
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gb2312编码。
sql decode函数用法?
decode函数比较1个参数时
SELECT ID,DECODE(inParam,’beComparedParam’,’值1′ ,’值2′) name FROM bank
#如果第一个参数inParam==’beComparedParam’,则select得到的name显示为值1,
#如果第一个参数inParam!=’beComparedParam’,则select得到的name显示为值2
decode函数比较多个参数时
SELECT ID,DECODE(inParam,’para1′,’值1′ ,’para2′,’值2′,’para3′,’值3′,’para4′,’值4′,’para5′,’值5′) name FROM bank
#如果第一个参数inParam==’para1’那么那么select得到的那么显示为值1;
#如果第一个参数inParam==’para2’那么那么select得到的那么显示为值2;
#如果第一个参数inParam==’para3’那么那么select得到的那么显示为值3;
#如果第一个参数inParam==’para4’那么那么select得到的那么显示为值4;
#如果第一个参数inParam==’para5’那么那么select得到的那么显示为值5;
mysql decode函数吗?
在ORACLE数据库里decode函数实现的功能,于MySQL数据库里可以使用case when函数来替代; MySQL数据库的decode函数是解密函数,它是加密函数encode的反函数,与ORACLE数据库里decode函数实现的功能完全不同。 ORACLE数据库里decode函数相当于MySQL数据库里的case when函数,只是前者看起来更加紧凑。
decode在where语句中怎么用?
在where中使?decode函数
在where中使?decode函数达到要求。
select * from zjk_pos_supplier_order
where ((decode(: code, NULL, 1, 0) = 1) or code = : code)
and order_date >= :order_date;
以上语句如果 : code变量赋值为null,则相当于语句
select * from zjk_pos_supplier_order
where order_date >= :order_date;
当 : code变量不为null时,则相当于
select * from zjk_pos_supplier_order
where code = :code
and order_date >= :order_date;
对于where语句后是否可以?case或decode语句,答案是可以的,但要保证where语句中仍然是=值判断语句在where中使用decode函数
在where中使?decode函数
在where中使?decode函数达到要求。
select * from zjk_pos_supplier_order
where ((decode(: code, NULL, 1, 0) = 1) or code = : code)
and order_date >= :order_date;
以上语句如果 : code变量赋值为null,则相当于语句
select * from zjk_pos_supplier_order
where order_date >= :order_date;
当 : code变量不为null时,则相当于
select * from zjk_pos_supplier_order
where code = :code
and order_date >= :order_date;对于where语句后是否可以?case或decode语句,答案是可以的,但要保证where语句中仍然是=值判断语句。
oracle decode函数使用方法?
DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。
比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
以上就是本文关于oracle中decode函数的使用方法示例的全部内容,希望对大家有所帮助。
decode函数可以嵌套两层吗?
可以。
一个值根据某个规则以另一种形式展现可用decode()方法,
decode(columnname,值1,翻译值1,值2,翻译值2,……缺省值)
举例:
表Test_user:
1、单个decode的使用
对所有用户类型为1的用户进行启用,用户类型不为1的,已被激活的启用,未被激活的禁用:
update test_user t set t.is_available=decode(t.user_type,’1′,’1′,t.is_actived),t.is_actived=decode(t.user_type,’1′,’1′,t.is_actived);
2、decode()函数的嵌套使用
1中的sql语句也可以像下面这么写:下面这么写逻辑性更强
update test_user t set t.is_available=decode(t.user_type,’1′,’1′,decode(t.is_actived,’0′,’0′,’1′)),t.is_actived=decode(t.user_type,’1′,’1′,t.is_actived);