SQLSERVER-CASE关键词的用法 .

2023-11-13

在Oralce中有个函数为Decode(),感觉非常好用,但是此函数为Oracle所独有,在SQLSERVER和MYSQL中实现与之相类似的功能还无相关函数,但通过CASE关键词可实现类似功能。
1 》》首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT =
CASE
WHEN THEN
WHEN THEN
ELSE
END


2 》》 我在SQLSERVER2000的实践

表t_notice有字段result为INT类型,有三种值:0表示发送成功,1表示发送失败,-1表示未发送,需查询出RESULT的值并返回数值所代表的中文。
  SELECT count(*), "result"=CASE        //单引号内的result为别名
  WHEN result=0 THEN "发送成功"
  WHEN result=1 THEN "发送失败"
  WHEN result=-1 THEN "未发送"
  END
  FROM t_notice
  ORDER BY  result

3 》》用Hibernate做持久化,HQL的写法
  SELECT count(*), CASE  WHEN result=0 THEN "发送成功"
  WHEN result=1 THEN "发送失败"
  WHEN result=-1 THEN "未发送"
  END
  FROM TNotice
  ORDER BY  result

注: TNotice为持久化类类名,HQL用CASE时,无需为查询字段加别名。


4 》》以上是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE: SELECT "Number of Titles", Count(*)
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN "Unpriced"
WHEN price < 10 THEN "Bargain"
WHEN price BETWEEN 10 and 20 THEN "Average"
ELSE "Gift to impress relatives"
END

你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:
SELECT
CASE
WHEN price IS NULL THEN "Unpriced"
WHEN price < 10 THEN "Bargain"
WHEN price BETWEEN 10 and 20 THEN "Average"
ELSE "Gift to impress relatives"
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN "Unpriced"
WHEN price < 10 THEN "Bargain"
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 < 10 THEN "Bargain"
WHEN price BETWEEN 10 and 20 THEN "Average"
ELSE "Gift to impress relatives"
END,
Title


注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。
除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLSERVER-CASE关键词的用法 . 的相关文章

随机推荐

  • MyCAT简易入门

    MyCAT简易入门 MyCAT是mysql中间件 前身是阿里大名鼎鼎的Cobar Cobar在开源了一段时间后 不了了之 于是MyCAT扛起了这面大旗 在大数据时代 其重要性愈发彰显 这篇文章主要是MyCAT的入门部署 一 安装java 因
  • 印度 SaaS 的崛起

    引言 云创新作为全球范围的努力已超过二十年 改变了整个行业 现在 印度正在成为一个新兴的全球领导者 推动了技术创新和显著的企业家精神 SaaS在全球范围内继续加速发展 因为各行业和企业都在向云上转移 随着数字化持续增长 印度成立的SaaS初
  • qgis 3.30 python二次开发环境搭建,一遍过教程

    qgis 3 30 python二次开发环境搭建 一遍过教程 1 使用mamba加速conda下载qgis 2 创建qgis虚拟环境 3 设置环境变量 4 测试代码 5 qgis库代码提示 6 参考链接和推荐链接 1 使用mamba加速co
  • JVM 字节码从入门到精通

    小册介绍 也许你写了无数行代码 会用很多炫酷的语法糖和高级的框架 但你未必了解这些高级语言背后的执行过程 即使对于一名经验丰富的 Java 程序员 在阅读 Java 字节码的时候也会感到很枯燥 我们为什么需要深入了解如此底层的信息呢 0x0
  • 《数智碳中和》白皮书发布以数智技术助力关键相关方实现碳达峰碳中和

    实现碳达峰 碳中和是一场广泛而深刻的经济社会系统性变革 促进能源转型升级成为实现双碳战略目标所需的重要一环 政府监管部门 能源生产企业 能源输送企业 能源消费用户及金融投资机构是实现双碳目标的关键力量 也是参与全国碳市场的重要主体 他们将以
  • Visual Studio 出现warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。 解决方案 转载的文章

    问题 Visual Studio 出现warning C4819 该文件包含不能在当前代码页 936 中表示的字符 请将该文件保存为 Unicode 格式以防止数据丢失 解决方案 1 修改字符编码格式 推荐 Visual Studio提供高
  • 从类声明中探索Qt的UI组合开发模式-组合模式

    引言 在使用Qt的的的的的开发引用程序的时候 有的会用UI设计师来设计UI界面 有的则的英文直接在代码中写 那么那种好呢 笔者认为使用UI设计师是最好的 尽管会生成许多多余的代发 Qt的的组合开发模式 Qt的这样的设计是一种MVC的逻辑 可
  • 关于iostat中await的理解

    关于iostat中await的理解 await 每个I O平均所需的时间 rd ticks wr ticks rd ios wr ios 不仅包括硬盘设备处理I O的时间 还包括了在kernel队列中等待的时间 rd ticks 读操作消耗
  • linux 6中4T磁盘识别并分区格式化挂接

    存储端划分4T的LUN后 主机端操作如下 1 主机识别 本例中hba卡的端口是host11和host12 root db1 echo gt sys class scsi host host11 scan root db1 echo gt s
  • Netlink 内核实现分析(一):创建

    http blog csdn net luckyapple1028 article details 50839395 Netlink 是一种IPC Inter Process Commumicate 机制 它是一种用于内核与用户空间通信的机
  • Resnet 18网络模型

    1 残差网络 Resnet 残差块 让我们聚焦于神经网络局部 如图左侧所示 假设我们的原始输入为x 而希望学出的理想映射为f x 作为上方激活函数的输入 左图虚线框中的部分需要直接拟合出该映射f x 而右图虚线框中的部分则需要拟合出残差映射
  • Canalys 2020Q2报告:百度智能云稳坐第一阵营 AI打造差异化竞争力

    在AI新基建领域的持续布局下 百度智能云站稳中国云市场第一阵营 9月9日消息 据英国调研机构Canalys发布的2020年第二季度中国基础云市场报告显示 中国云计算市场整体规模达43亿美金 同比增长70 突破新纪录 其中 头部四家厂商市场占
  • 手机热点总是正在连接服务器,电脑连接手机热点无法上网的三种解决方法

    电脑连接手机热点无法上网的三种解决方法 方法一 网络诊断 右键点击通知栏的网络图标 打开网络和共享中心 如图所示 在网络和共享中心 找到所连接的手机网络热点并点击它 如图所示 点击 诊断 功能 诊断网络无法连接的问题 如图所示 系统的网络诊
  • 网络分层模型

    OSI七层模型 物数网传会表应 物理层 主要定义物理设备标准 如网线的接口类型 光纤的接口类型 各种传输介质的传输速率等 它的主要作用是传输比特流 就是由1 0转化为电流强弱来进行传输 到达目的地后再转化为1 0 也就是我们常说的数模转换与
  • 性能综述方法论

    性能问题和Bug不同 后者的分析和解决思路更清晰 很多时候从应用日志 文中的应用指分布式服务下的单个节点 即可直接找到问题根源 而性能问题 其排查思路更为复杂一些 对应用进行性能优化 是一个系统性的工程 对工程师的技术广度和技术深度都有所要
  • fiery服务器不显示,fiery服务器打印设置

    fiery服务器打印设置 内容精选 换一换 在创建数据库连接之后 才能使用它来执行SQL语句操作数据 JDBC提供了三个方法 用于创建数据库连接 DriverManager getConnection String url DriverMa
  • 矩阵的秩与行列式的几何意义

    这里首先讨论一个长期以来困惑工科甚至物理系学生的一个数学问题 即 究竟什么是面积 以及面积的高维推广 体积等 1 关于面积 一种映射 大家会说 面积 不就是长乘以宽么 其实不然 我们首先明确 这里所讨论的面积 是欧几里得空间几何面积的基本单
  • spring boot jar部署 控制台 日志 乱码

    spring boot jar部署 控制台 日志 乱码 问题描述 spring boot jar包部署 通过java jar 命令运行 jar文件 代码中通过变量log输出到控制台的中文 乱码 但是仅仅是在运行jar时才乱码 而在用ecli
  • Mybatis源码分析:MapperMethod中内部静态类MethodSignature的作用

    MethodSignature分析 MethodSignature为MapperMethod类提供了三个作用 获取待执行方法中的参数和 Param注解标注的参数名 获取标注有 MapKey的参数 Mapkey作用在后续会讲到 方法的返回类型
  • SQLSERVER-CASE关键词的用法 .

    在Oralce中有个函数为Decode 感觉非常好用 但是此函数为Oracle所独有 在SQLSERVER和MYSQL中实现与之相类似的功能还无相关函数 但通过CASE关键词可实现类似功能 1 首先让我们看一下 CASE 的语法 在一般的