`
zyn010101
  • 浏览: 325668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql中的decode(转)

阅读更多

 举例:
     oracle:

select decode(pay_name,'aaaa','bbb',pay_name),sum(comm_order),sum(suc_order),sum(suc_amount) From  payment.order_tab  group by decode(pay_name,'aaaaa','bbbb',pay_name)

转换成mysql:实现
 

select case when pay_name='aaa' then 'bbb' else pay_name end ,sum(comm_order),sum(suc_order),sum(suc_amount) From  payment.order_tab  group by case when pay_name='aaa' then 'bbb' else pay_name end 



     在mysql中有decode()是这样解释的:一种是加密,另外一种是比较
     在Oracle中:
     语法:DECODE(control_value,value1,result1[,value2,result2…] [,default_result]);control _value试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。
value1是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result1 是一组成序偶的结果值。
default_result 未能与任何一个值匹配时,函数返回的默认值。
例如:
selectdecode( x , 1 , ‘x is 1 ’, 2 , ‘x is 2 ’, ‘others’) from dual
当x等于1时,则返回‘x is 1’。
当x等于2时,则返回‘x is 2’。
否则,返回others’。
需要,比较2个值的时候,可以配合SIGN()函数一起使用。
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

 

 

此外,还可以在Order by中使用Decode。
例如:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)(责任编辑:卢兆林)

分享到:
评论
1 楼 wellkingsen 2014-02-12  
很好,学习了。

相关推荐

    Mysql支持emoji 表情符号 升级编码为UTF8MB4

    在早期的Mysql版本中,默认的编码是latin1,而这个编码无法正确地存储emoji表情符号。为了解决这个问题,需要将Mysql的编码升级到UTF8MB4,这样可以正确地存储和显示emoji表情符号。 升级编码的步骤 1. 在...

    mysql仿oracle的decode效果查询

    本文将详细介绍如何在MySQL中模拟Oracle的`DECODE`函数,并探讨不同数据库系统中的查询差异。 首先,Oracle的`DECODE`函数可以理解为一个简单的条件判断表达式,它允许我们在一个查询中根据指定的条件返回不同的列...

    Oracle到mysql转换的问题总结要点.doc

    - `DECODE`函数:Oracle的`DECODE`在MySQL中可以用`CASE WHEN`语句替代。 - 序列化函数:Oracle的`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`在MySQL中需使用用户变量模拟,如示例所示。 - 行号`ROWNUM`...

    Oracle到mysql转换的问题总结.doc

    - `DECODE`函数:Oracle中的`DECODE`在MySQL中可以用`CASE WHEN`表达式替换。 - 分区窗口函数:Oracle的`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`在MySQL中需通过用户变量实现,如示例所示。 6. 其他...

    mysql与oracle差异总结

    MySql 中的 CASE WHEN 语句可以替换 DECODE 函数。MySql 中的 TEXT 等同于 Oracle 中的 LONG 函数。 13. 日期函数 MySql 中的 EXTRACT 函数可以提取日期的年、月、日等信息,而 Oracle 需要使用 TO_CHAR 函数来...

    DECODE解码代码

    例如,MySQL没有内置的DECODE函数,但可以通过IF或CASE语句实现类似的功能。在SQL Server中,可以使用CASE表达式来达到相同的效果。 在实际开发中,理解并恰当使用DECODE函数可以提高代码的可读性和效率,特别是在...

    Oracle到mysql转换的问题总结.docx

    - `DECODE`函数:Oracle的`DECODE`在MySQL中可用`CASE WHEN`表达式代替。 - 序列化函数:Oracle的`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`, 在MySQL中可以使用用户变量和`IF`函数模拟实现。 例如,...

    mysql 函数大全

    本文将深入探讨MySQL中的几个关键函数,包括`DECODE`函数以及日期和字符串之间的转换方法。 一、`DECODE`函数 在MySQL中,`DECODE`函数是一个非常实用的条件判断工具,它允许你在一个表达式中进行简单的if-then-...

    Oracle到mysql转换的问题总结[收集].pdf

    - Oracle的`DECODE`函数在MySQL中可以用`CASE WHEN`语句替换。 - Oracle的窗口函数`ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)`在MySQL中无法直接使用,需要借助用户变量来模拟。 - Oracle的行号`ROWNUM`...

    Mysql中 binlog日志.docx

    Mysql 中 Binlog 日志使用 MySql 中的 Binlog 日志是一种用于记录数据库变更的日志机制,通过 Binlog 日志可以追溯数据库的所有操作记录,包括数据的增删改查等操作。 Binlog 日志的作用是为了确保数据库的数据...

    使用Decode运算符.rar

    - `Decode` 只在某些特定的数据库系统中可用,如Oracle,而在其他系统,如MySQL或PostgreSQL中可能需要使用 `CASE` 或其他方式来实现类似功能。 - 由于其简单的结构,`Decode` 可能不如 `CASE` 易于理解和维护,...

Global site tag (gtag.js) - Google Analytics