`

CASE表达式的一些问题

阅读更多
SQL Server根据表达式的结果中优先级最高的数据类型确定CASE表达式结果的数据类型,而不是按实际返回结果的数据类型确定。这就意味着,如果CASE 表达式的一个THEN子句返回VARCHAR(30)值,而另一个返回INT值,表达式的结果将总是INT,因为INT的优先级比VARCHAR高。如果实际返回VARCHAR(30)值,SQL Server将尝试转换它。如果该值不可转换,将产生一个运行时错误。如果可以转换,它被转换为INT类型,当然,这可能会导致和原始值不一样的排序行为。

摘自:SQL Server2005技术内幕 T-SQL程序设计
另:SQL Server 对数据类型使用以下优先级顺序:
引用
1.用户定义数据类型(最高)
2.sql_variant
3.xml
4.datetimeoffset
5.datetime2
6.datetime
7.smalldatetime
8.date
9.time
10.float
11.real
12.decimal
13.money
14.smallmoney
15.bigint
16.int
17.smallint
18.tinyint
19.bit
20.ntext
21.text
22.image
23.timestamp
24.uniqueidentifier
25.nvarchar(包括 nvarchar(max))
26.nchar
27.varchar(包括 varchar(max))
28.char
29.varbinary(包括 varbinary(max))
30.binary(最低)

以下摘自SQL Server联机丛书
CASE 搜索表达式:

引用
1.按指定顺序对每个 WHEN 子句的 Boolean_expression 进行计算。
2返回 Boolean_expression 的第一个计算结果为 TRUE 的 result_expression。
3.如果 Boolean_expression 计算结果不为 TRUE,则在指定 ELSE 子句的情况下数据库引擎将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

分享到:
评论

相关推荐

    《SQL进阶教程》第一章case表达式

    《SQL进阶教程》第一章case表达式 参考给出的代码,自己重写的代码配合文章使用,更佳最后说一句,SQL是世界上最好的语言,没有之一

    《Oracle Database编程指南》14-03:CASE表达式(CASE Expressions)

    内容导航1、定义2、分类3、简单CASE表达式3.1、示例13.2、示例23.3、案例33.4、案例43.5、案例53.6、独立案例: 1、定义 CASE表达式让我们使用IF ... THEN ... ELSE逻辑,而不必调用过程。 2、分类 CASE表达式分为...

    CASE表达式实现基于条件逻辑来返回一个值

    我们在开发过程中,经常需要针对一列,基于条件逻辑来返回一个值,那么,这时候就需要使用到CASE表达式了。 例如,以下对Products表的查询就在SELECT语句中使用了CASE表达式,以生成用于描述categoryid列取值的信息...

    Ruby中case表达式详解

    Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句。 第二种形式,在case语句的顶部指定一个目标,而每个when从句列出一个或者多个...

    case-expression:一个类似于 Haskell 的 JavaScript case 表达式

    case-expression是一种类似于 Haskell 的case表达式的控制结构。 概要 case-expression比常规switch语句更强大,因为它允许您将表达式匹配到任意对象,包括函数和正则表达式。 case-expression的签名如下: case...

    CASE-Query-T-SQL:带有搜索的CASE表达式的SELECT语句

    案例查询-T-SQL 带有搜索的CASE表达式的SELECT语句

    JSONExpr 0.5.10 - Delphi的JSON解析及表达式运算包

    表达式的解析和求值是一个应用面非常广的功能。现有的表达式分析器虽然各具特点,但基本上毫无例外的都使用自己独特的内存结构,不具有通用性。... Fix some bugs on Basic parsing(Case Else, Redim Perserve).

    表达式运算优先级堆栈

    case '*':return(a*b);break; case '/':return(a/b);break; } } int main() { struct stack1 OPTR; struct stack2 OPND; char c,op; int a,b,an; Initstack1(&OPTR); push1(&OPTR,'#'); Initstack2(&...

    JAVA 正则表达式

    可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工 具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可 ...

    mysql存储过程之case语句用法实例详解

    本文实例讲述了mysql存储过程之case语句用法。分享给大家供大家参考,具体如下: 除了if语句,mysql提供了一个替代的条件语句CASE。...我们可以使用简单CASE语句来检查表达式的值与一组唯一值的匹配,上述sql中,case_e

    正则表达式

    m (多行查找) vaScript动态正则表达式问题 请问正则表达式可以动态生成吗? 例如JavaScript中: var str = "strTemp"; 要生成: var re = /strTemp/; 如果是字符连接: var re = "/" + str + "/"即可 但是要...

    c语言实现的括号匹配算法 无括号算术表达式处理算法

    c语言实现的括号匹配算法 无括号算术表达式处理算法 #include "seqstack.h" #include "stdio.h" void BracketMatch(char *str); void BracketMatch(char *str) /* str[]中为输入的字符串,利用堆栈技术来检查该...

    EL表达式 (详解)

    当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。 例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如...

    表达式计算器1

    case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "0": if (isEqual) { tResult.Text = ""; //如果已经执行一次计算,那么再次输入数字时,应清空tresult } isEqual = ...

    Golang中switch语句和select语句的用法教程

    前者又可被简称为case表达式。因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。 1、表达式switch语句 var name string ... switch name { case Golang: fmt.Println(Golang) case Rust: fmt....

    后缀表达式求值计算.cpp

    // case '+': // y=p.top();p.pop();x=p.top();p.pop();p.push(x+y);break; // case '-': // y=p.top();p.pop();x=p.top();p.pop();p.push(x-y);break; // case '*': // y=p.top();p.pop();x=p....

    表达式求值.docx表达式求值涉及许多不同的情况和方法,具体取决于表达式的形式和要求的精度 下面是一个简单的例子

    表达式求值 表达式求值涉及许多不同的情况和方法,具体取决于表达式的形式和要求的精度。下面是一个简单的例子,演示如何对简单的数学表达式进行求值,如加法、减法、乘法和除法: ```cpp #include #include #...

    case when then语句用法

    该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果两者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。ELSE子句是可选项。当CASE语句中不...

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-07case应用案例1.mp4

    Linux运维-运维系统服务04-Shell脚本d6-Shell函数与正则表达式-07case应用案例1.mp4

Global site tag (gtag.js) - Google Analytics