一,DECODE函数

其基本语法为:

Sql代码DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else)

DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else)

表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。亦即:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

延伸用法:

1. 与sign函数联用比较大小:

Sql代码select decode(sign(arg1-arg2),-1, arg1, arg2) from dual; --get arg1与arg2的值

select decode(sign(arg1-arg2),-1, arg1, arg2) from dual; --get arg1与arg2的较小值

Sql代码select decode(sign(3-5),1 ,3, 5) from dual

select decode(sign(3-5),1 ,3, 5) from dual

注:sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

2. 表、视图结构转化:

基本思路:使用substrb函数实现对字段的判断,然后用decode函数对数据进行重新计算,并生成新的数据和构成新的表(table or view)。

二,CASE WHEN

其语法如下:

Sql代码SELECT  =

CASE WHEN  THEN

WHEN  THEN 

ELSE  END

SELECT  =

CASE WHEN  THEN

WHEN  THEN 

ELSE  END

除了可以在select 中使用CASE 外,where 子句,group by 子句,order by 子句都可以使用

Sql代码SELECT     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END AS "Range",

Title

FROM titles

where

CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'     END in('Average','Bargain')

GROUP BY     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'     END,

Title

ORDER BY     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END,Title

SELECT     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END AS "Range",

Title

FROM titles

where

CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'     END in('Average','Bargain')

GROUP BY     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'     END,

Title

ORDER BY     CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END,Title

rm_site_master 表结构:rma_center | name

---------------------------

123              |qw

23                |ASde

45                |sssdf

55                |e3fbg

55555          |adfv

22221          |sdfsfe

4                  |sdfeg

579              |lojgdex

Sql代码select name,

CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END  AS "RMA CENTER Type"

from rm_site_master

where  CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END in('30~100','>1000')

group by CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END,

name

order by CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END,

name

select name,

CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END  AS "RMA CENTER Type"

from rm_site_master

where  CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END in('30~100','>1000')

group by CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END,

name

order by CASE

WHEN rma_center IS NULL THEN 'Null'

WHEN rma_center > 1000 THEN '>1000'

WHEN rma_center BETWEEN 30 and 100 THEN '30~100'

ELSE 'Gift to impress relatives'     END,

name

三,DECODE 与CASE WHEN 的比较

1,DECODE  Oracle 特有;

2,CASE WHEN  Oracle ,  SQL Server,  MySQL 都可用;

3,DECODE 只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,CASE  可用于=,>=,,is null,is not null 等的判断;

4,DECODE 使用其来比较简洁,CASE 虽然复杂但更为灵活;

mysql sql decode函数用法_SQL查询中DECODE函数和CASE WHEN 比较相关推荐

  1. pythoncast函数用法_数据库中cast函数

    SQL Server 中随机函数应用举例 最近工作中要随机生成一些数据,基本上全是通过rand()函数来完成.下面以几个例子做下简单说明. 1.生成年龄 思路:年龄一般为0-100岁,只要以当时日期为 ...

  2. python print函数用法_Python3.2中Print函数用法实例详解

    本文实例讲述了Python3.2中Print函数用法.分享给大家供大家参考.具体分析如下: 1. 输出字符串 >>> strHello = 'Hello World' >> ...

  3. python pow函数用法_Python代码中pow()函数具有哪些功能呢?

    摘要: 下文讲述Python代码中pow()函数的功能说明,如下所示: pow函数功能说明 pow() 函数用于 计算 xy(x 的 y 次方) 的值 pow函数语法: import math mat ...

  4. MySQL消除笛卡尔积的方法_SQL查询中的笛卡尔积现象解决方法

    一. 笛卡尔积 笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员. ...

  5. mysql sql 去除重复行_SQL查询语句去除重复行

    1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...

  6. python中函数用法教程_Python中zip()函数用法实例教程

    一.定义: zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuple ...

  7. SQL server 第十章------模糊查询和聚合函数上机实践

    SQL server 第十章------模糊查询和聚合函数 上机练习1 –查询住址在"山东"的学生姓名.电话.住址. create table student( Name nvar ...

  8. java 用来查找输出的函数_Solr复杂查询一:函数查询

    一.简介 Solr的函数可以动态计算每个文档的值,而不是返回在索引阶段对应字段的静态数值集.函数查询是一类特殊的查询,它可以像关键词一样添加到查询中,对所有文档进行匹配并返回它们的函数计算值作为文档得 ...

  9. 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...

    通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...

最新文章

  1. STM32的串口函数_库函数USART_SendData问题和解决方法--硬件复位导致第一个字节丢失
  2. Python入门100题 | 第079题
  3. 当我们不为了拿奖,而在做事情的时候
  4. 查看服务器硬件配置信息(cpu/内存)
  5. 【译】Diving Into The Ethereum VM Part 3 — The Hidden Costs of Arrays
  6. [USACO1.2]方块转换 Transformations
  7. 恢复mysql中root用户的所有权限_如何还原MySQL root用户的全部权限
  8. 牛顿插值法及其C++实现
  9. 转: Div与table的区别
  10. Bushound数据分析及使用指南
  11. 如何利用excel中的数据源制作数据地图
  12. 微众银行软件测试笔试题面试题
  13. 美国德保罗大学计算机排名,2018福布斯美国最佳大学排名德保罗大学排名第243...
  14. 点击按钮弹出单选列表对话框和加载Webview
  15. CTF比赛解析备课与教学:漏洞扫描
  16. UVM和C-完美结合
  17. WQ7033开发指南(基础篇)之1.1 初识SDK
  18. Linux mint 16安装后的种种善后
  19. 高科技引领时尚 甘肃天星独创全球共振迷你音响
  20. 计算机如何安装cpu风扇,cpu风扇怎么装(台式电脑安装步骤图)

热门文章

  1. 安徽省建设工程监理人员从业水平能力证书
  2. 碉堡了!基于 Linux 的可自动瞄准的智能步枪
  3. 检查docker版本的两个命令
  4. sqlite 问题 database disk image is malformed 修复
  5. cmd获取python返回值
  6. linux命令 scp怎么用,linux scp命令怎么用
  7. 移动硬盘“文件或目录损坏,无法读取”解决方案
  8. IQueryable 和 IEnumable
  9. windows server2012 开启mysql远程访问
  10. mysql 开启远程访问_开启mysql的远程访问权限