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_When用法》为我们提供了一个深入学习SQL中Case表达式使用方法的契机。在SQL中,Case表达式是一个条件分支结构,允许在查询中进行条件判断,并基于条件返回不同的结果。该表达式分为两种格式:简单Case...
《Oracle Database编程指南》14-03章节深入解析了CASE表达式,这是一种在SQL查询中实现条件逻辑的强大工具,可以替代复杂的IF...THEN...ELSE结构。CASE表达式分为两种类型:简单CASE表达式和搜索CASE表达式。 1、...
CASE表达式是SQL中一种强大的工具,用于根据不同的条件返回不同的值。在处理复杂的逻辑判断时,它提供了灵活且简洁的解决方案。CASE表达式在多种SQL方言中都有类似的形式,这里我们将以SQL Server中的T-SQL语法为例...
Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句。 第二种形式,在case语句的顶部指定一个目标,而每个when从句列出一个或者多个...
在处理复杂的数据筛选和转换时,CASE表达式是一个非常强大的工具。本主题将深入探讨“带有搜索的CASE表达式的SELECT语句”,这是一种在SQL查询中实现条件逻辑的强大方法,用于根据特定条件返回不同的值。 CASE...
### CASE的用法 (Transact-SQL) #### 概述 `CASE` 是 Transact-SQL 中一个非常重要的...通过对 CASE 简单表达式和 CASE 搜索表达式的理解与应用,开发人员能够更加灵活高效地构建 SQL 查询,实现复杂业务逻辑的需求。
"C++表达式括号匹配配对判断问题" 本文将讨论C++编程中表达式括号匹配配对问题的解决方案。该问题可以使用栈来解决,通过分析表达式中括号的匹配情况,判断括号是否正确匹配。 1. 问题描述 在C++编程中,一个算法...
在计算机科学领域,将一个中缀表达式转换为后缀表达式是解决算术表达式求值问题的一种常用方法。通过这种方式可以避免括号带来的优先级问题,并简化计算过程。此案例主要涉及到了三种自定义类的设计:`stack`用于...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...
case-expression是一种类似于 Haskell 的case表达式的控制结构。 概要 case-expression比常规switch语句更强大,因为它允许您将表达式匹配到任意对象,包括函数和正则表达式。 case-expression的签名如下: case...
### SQL Server 中 CASE 表达式的深入解析与应用实例 #### 概述 在 SQL Server 数据库管理系统中,`CASE` 表达式是一种非常强大的工具,用于在查询语句中进行条件判断和数据处理。它允许用户根据指定的条件返回...
程序首先定义了一些必要的数据结构: 1. **ComStack**:一种特殊的栈结构,用于存放浮点型数值。 ```c typedef float DataType; typedef struct { float data[MaxSize]; int top; } ComStack; ``` 2. **Stack...
在数据结构设计中,通常使用栈来处理表达式求值的问题。这里,我们可以用一个栈来存储表达式的字符,栈的最大容量、元素存储数组以及指向栈顶的指针是关键的数据结构组成部分。例如,栈可以用来处理中缀表达式到后缀...
在SQL Server中,CASE表达式是一种强大的工具,用于在查询中进行条件判断和逻辑操作。它的功能远不止创建新字段那么简单,而是可以在多个方面增强你的SQL查询能力。以下是对CASE关键字在SQL Server中不同用法的详细...
在本课时的学习中,我们将深入理解Select Case语句的格式、功能和执行过程,并通过三种不同形式的表达式列表来解决实际问题。 1. **Select Case语句的格式** Select Case语句的基本结构如下: ```vb Select Case...
`std::stack`是一个先进后出(First In Last Out, FILO)的数据结构,非常适合处理后缀表达式这类问题。 ##### 3.2 输入处理 - 用户通过标准输入提供一个由数字(0-9)和运算符(+、-、*、/)组成的后缀表达式。 - ...
早期Java开发者通常依赖第三方类库来实现正则表达式功能,这些类库存在不一致性、兼容性问题以及维护困难等缺点。然而,从JavaJDK1.4版本开始,Java正式自带了支持正则表达式的包java.util.regex,这标志着Java正式...