文章目录

  • 第五十一章 SQL函数 DECODE
  • 大纲
  • 参数
  • 描述
  • 返回值的数据类型
  • 示例

第五十一章 SQL函数 DECODE

计算给定表达式并返回指定值的函数。

大纲

DECODE(expr {,search,result}[,default])

参数

  • expr - 要解码的表达式。
  • search - 要与Expr进行比较的值。
  • result - Expr匹配搜索时返回的值。
  • default - 可选-如果expr与任何搜索都不匹配,则返回默认值。

描述

可以指定多个搜索和结果对,以逗号分隔。您可以指定一个默认值。DECODE表达式(包括EXPRSEARCHRESULTDEFAULT)中的最大参数数约为100。搜索、结果和默认值可以从表达式派生。

为了计算DECODE表达式,会逐个将expr与每个搜索值进行比较:

  • 如果expr等于search ,则返回相应的结果。
  • 如果expr不等于search ,则返回默认值,如果省略默认值,则返回NULL

仅在将searchExpr进行比较之前计算每个search,而不是在将所有searchExpr进行比较之前评估所有search。因此,如果上一次搜索等于EXPR,不会对搜索求值。

DECODE表达式中,将两个NULL视为等效。如果exprNULL,则将返回同样为NULL的第一次搜索结果。

请注意,为了与Oracle兼容,支持解码。

返回值的数据类型

DECODE返回第一个结果参数的数据类型。如果无法确定第一个结果参数的数据类型,则DECODE返回VARCHAR。对于数值,DECODE从所有可能的结果参数值返回最大长度、精度和小数位数。

如果结果和默认值的数据类型不同,则返回的数据类型是与所有可能的返回值最兼容的类型,即具有最高数据类型优先级的数据类型。例如,如果结果是整数,默认值是小数,则DECODE返回一个带有数据类型数字的值。这是因为数字是与两者兼容的最高优先级的数据类型。

示例

下面的例子将1319岁的年龄“decodes”“Teen”;
默认为“Adult”:

SELECT Name,Age,DECODE(Age,13,'Teen',14,'Teen',15,'Teen',16,'Teen',17,'Teen',18,'Teen',19,'Teen','Adult') AS AgeBracket
FROM Sample.Person
WHERE Age > 12

下面的示例对空值进行解码。
如果FavoriteColors没有值,DECODE将它替换为字符串' no Preference ';
否则,它返回FavoriteColors值:

SELECT Name,DECODE(FavoriteColors,NULL,'No Preference',$LISTTOSTRING(FavoriteColors,'^')) AS ColorPreference
FROM Sample.Person
ORDER BY Name

下面的示例解码颜色首选参数。如果此人只有一种最喜欢的颜色,则该颜色名称将被字母缩写替换。如果用户有多个最喜欢的颜色,则DECODE返回FavoriteColors值:

SELECT Name,DECODE(FavoriteColors,$LISTBUILD('Red'),'R',$LISTBUILD('Orange'),'O',$LISTBUILD('Yellow'),'Y',$LISTBUILD('Green'),'G',$LISTBUILD('Blue'),'B',$LISTBUILD('Purple'),'V',$LISTBUILD('White'),'W',$LISTBUILD('Black'),'K',$LISTTOSTRING(FavoriteColors,'^'))
FROM Sample.Person
WHERE FavoriteColors IS NOT NULL
ORDER BY FavoriteColors

请注意,ORDER BY子句按原始字段值排序。以下示例按解码值排序:

SELECT Name,DECODE(FavoriteColors,$LISTBUILD('Red'),'R',$LISTBUILD('Orange'),'O',$LISTBUILD('Yellow'),'Y',$LISTBUILD('Green'),'G',$LISTBUILD('Blue'),'B',$LISTBUILD('Purple'),'V',$LISTBUILD('White'),'W',$LISTBUILD('Black'),'K',$LISTTOSTRING(FavoriteColors,'^')) AS ColorCode
FROM Sample.Person
WHERE FavoriteColors IS NOT NULL
ORDER BY ColorCode

下面的示例将“Employee”记录中的“Company code”字段中的数字代码进行解码,并返回相应的部门名称。
如果员工的公司代码不是110,DECODE返回默认的“Admin(non-tech)”:

SELECT Name,
DECODE (Company,1, 'TECH MARKETING', 2, 'TECH SALES', 3, 'DOCUMENTATION', 4, 'BASIC RESEARCH', 5, 'SOFTWARE DEVELOPMENT', 6, 'HARDWARE DEVELOPMENT',7, 'QUALITY TESTING', 8, 'FIELD SUPPORT', 9, 'PHONE SUPPORT',10, 'TECH TRAINING','Admin (non-tech)') AS TechJobs
FROM Sample.Employee WHERE Company<10

该表达式使用Company作为expr参数,并使用10对搜索和结果参数。
默认参数为“Admin(non-tech)”

第五十一章 SQL函数 DECODE相关推荐

  1. 第九十一章 SQL函数 LOWER

    文章目录 第九十一章 SQL函数 LOWER 大纲 参数 描述 示例 第九十一章 SQL函数 LOWER 将字符串表达式中的所有大写字母转换为小写字母的大小写转换函数. 大纲 LOWER(string ...

  2. 第三十一章 SQL函数 CONVERT

    文章目录 第三十一章 SQL函数 CONVERT 参数 描述 CONVERT(datatype,expression,format-code) {fn CONVERT(expression,datat ...

  3. 第五十七章 SQL函数 $FIND

    文章目录 第五十七章 SQL函数 $FIND 大纲 参数 描述 $FIND, POSITION, CHARINDEX, INSTR 示例 第五十七章 SQL函数 $FIND 字符串函数,返回字符串中子 ...

  4. 第六十一章 SQL函数 GREATEST

    文章目录 第六十一章 SQL函数 GREATEST 大纲 参数 描述 返回值数据类型 示例 第六十一章 SQL函数 GREATEST 从一系列表达式中返回最大值的函数. 大纲 GREATEST(exp ...

  5. 第九十五章 SQL函数 MINUTE

    文章目录 第九十五章 SQL函数 MINUTE 大纲 参数 描述 示例 第九十五章 SQL函数 MINUTE 返回日期时间表达式的分钟的时间函数. 大纲 {fn MINUTE(time-express ...

  6. 第三十五章 SQL函数 CURRENT_DATE

    文章目录 第三十五章 SQL函数 CURRENT_DATE 大纲 描述 示例 第三十五章 SQL函数 CURRENT_DATE 日期/时间函数,返回当前本地日期. 大纲 CURRENT_DATE 描述 ...

  7. 第五十二章 SQL函数 DEGREES

    文章目录 第五十二章 SQL函数 DEGREES 大纲 参数 描述 示例 第五十二章 SQL函数 DEGREES 将弧度转换为角度的数值函数. 大纲 DEGREES(numeric-expressio ...

  8. 第七十五章 SQL函数 LEFT

    文章目录 第七十五章 SQL函数 LEFT 大纲 参数 描述 示例 第七十五章 SQL函数 LEFT 标量字符串函数,返回从字符串表达式的开始(最左位置)开始的指定数量的字符. 大纲 {fn LEFT ...

  9. 第四十五章 SQL函数 DATEPART

    文章目录 第四十五章 SQL函数 DATEPART 大纲 参数 描述 Datepart 参数 日期输入格式 无效的参数错误代码 范围和值检查 示例 第四十五章 SQL函数 DATEPART 日期/时间 ...

最新文章

  1. Ruby中,:(ampersand colon)的用法
  2. java反编译工具_漫话:如何给女朋友解释什么是编译与反编译
  3. JAVA面试题(part2)--位运算符
  4. mysqld占用mysql端口_IDEA连接不上MySQL端口号占用的解决
  5. 为什么中国人穷得只剩房子
  6. 【转载】推荐5款超实用的.NET性能分析工具
  7. Dataframe 新增一列, apply 通用方法
  8. servlet 同版本对应的Tomcat版本 ,不同版本的web.xml写法
  9. JQ 1.9 API在线资源
  10. 如何防止在ListBox中添加很多数据出现不停的刷新?
  11. PL2303 Windows8.1驱动的问题
  12. xyz坐标转换ybc_GNSS仰角和方位角的计算及代码,XYZ转BLH坐标的代码及原理
  13. [CF1538G] Gift Set (数学简单题)
  14. [BZOJ1233][Usaco2009Open]干草堆tower(单调队列优化)
  15. UR首发丹宁无性别系列,并发布潮流丹宁大片及米卡限量礼盒
  16. ai为什么要栅格化_AI 效果-栅格化的具体用途是什么
  17. [转] 管理学中的各种理论
  18. COMP0037 Coursework
  19. 利用OpenCV检测图像中的多个水果
  20. 交互设计是什么:一篇文章推开交互设计的大门

热门文章

  1. VSCODE codeforces 插件
  2. 混沌工程之ChaosToolkit使用之一删除K8s POD
  3. 正兴证券损失通知书:Rosen Law Firm宣布针对中国正兴车轮集团有限公司提起证券集体诉讼和参加集体诉讼的重要截止日期
  4. 史上最牛最强的linux学习笔记 10.shell基础
  5. CANOE 14/15 DIVA DELA APE19 CRACK DONGLE KEYMAN
  6. 混合云是什么,混合云是怎么工作的?
  7. Thirteen Days 邻接表及广度优先遍历
  8. 源码之 LifeCycleOwner
  9. proguard学习
  10. [hust]校内生存网站集合