`
csstome
  • 浏览: 1478733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQLServer中Case when的一个意外问题

阅读更多
在论坛回答问题时,发现测试脚本会出现如下问题,百思不得其解。
setnocounton
createtabletest(avarchar(10))
insertintotestselect'a'
insertintotestselect'b'

declare@str1varchar(8000)
declare@str2varchar(8000)
set@str1=''
set@str2=''

select@str1=@str1+afromtestorderbya
print@str1--返回ab

select@str2=@str2+afromtest
orderby
caseawhen'a'then1
when'b'then2else99end

print@str2--返回b

droptabletest
setnocountoff

上面的@str2会丢失前面的所有记录,只保留order by的最后一条-_-||
分享到:
评论

相关推荐

    SQL Server中Case 的不同用法

    CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。本文将为大家介绍SQL Server中Case 的不同用法。

    case when和sum case when 写法及拼接字段

    1 case when 写法 2 sum case when 用法 3 select 拼接字段 示例如下: when 2 then 'C' else 'D' end ) as '类型',count(*) as '数量' from table group by orderType

    case when then

    一条sql语句就能让你case when then怎么用,什么时候用

    SqlServer使用 case when 解决多条件模糊查询问题

    主要介绍了SqlServer使用 case when 解决多条件模糊查询问题 的相关资料,需要的朋友可以参考下

    sqlserver 中时间为空的处理小结

    二、如何在sql语句中判断为NULL的时间字段 假设表为:TestTable SN DateTime1 DateTime2 1 2011-10-24 2011-10-25 2 NULL 2011-10-26 3 2011-10-25 NULL 用case进行查询,若写成: select (case DateTime1 ...

    sqlserver中Case的使用方法(上下篇)第1/2页

    代码如下: –简单Case函数 CASE sex WHEN ‘1’ THEN ... 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 代码如下: –比如说,下面这段SQL,你永远无法得到“第二类”

    SQL Server 备份永久脚本

    实现sqlserver自动备份, select @数据库文件大小=cast((convert (dec (15,2),sum(convert(bigint,case when status & 64 = 0 then size else 0 end))) + convert (dec (15,2),sum(convert(bigint,case when status ...

    SQL Server高级内容之case语法函数概述及使用

    1.Case函数的用法 (1)使用类似:switch-case与if-else if。 (2)语法: case [字段] when 表达式 then 显示数据 when 表达式...2)执行的SQL语句是: 代码如下: Select ID,TestBase, Case When testBase>=90 then ‘A’

    sql server动态行转列.sql

    sqlserver 动态行专列 避免了数据列过多的时候大量的使用case when then...... 原数据 : UserName Subject Score Nick 语文 80 Nick 数学 90 Nick 英语 70 Nick 生物 85 Kent 语文 80 Kent 数学 90 Kent ...

    SQL Server CASE语句中关于Null的处理

     从数据表中选择一个字段“field”,如果“field”值是1或NULL赋值为1,其它情况为0,该怎么写啊?这样写对不对啊?  (CASE field  WHEN '1' THEN '1'  WHEN NULL THEN '1'  ELSE '0' END  ) AS field ...

    sql学习之CASE WHEN THEN ELSE END的用法

    主要介绍了sql学习之CASE WHEN THEN ELSE END的用法,需要的朋友可以参考下

    sqlserver自定义函数

    学习与做项目中总结的几个实用的sqlserver 函数 希望对大家有帮助 --确定某年某月有多少天 Create FUNCTION DaysInMonth ( @date datetime ) Returns int AS BEGIN RETURN Day(dateadd(mi,-3,DATEADD(m, DATEDIFF...

    sqlserver对字段出现NULL值的处理

    代码如下: -判断某些字段是否为空 –case select case when ‘字段名’ is null then ‘\N’ else convert(varchar(20),’字段名’) end as ‘NewName’ select case when null is null then ‘\N’ else convert...

    用于生成数据字典的SQL语句

    /*SQL Server数据库字典(查询所有的表结构)*/ SELECT TOP 100 PERCENT --a.id, CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS ...

    sqlserver Case函数应用介绍

    –简单Case函数CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’...还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。–比如说,下面这段SQL,你永远无法得到“第

    SQL Server 交叉表查询 case

    代码如下所示: 表landundertake结构如下所示: 表appraiser结构如下所示: access代码: 代码如下: TRANSFORM First(Landundertake.valuerId) AS valuerId之First SELECT Appraiser.quarterId, Landundertake....

    15个常用的SQL Server高级语法

    自从用了EF后很少写sql和存储过程了,需要写个比较复杂的报告,翻出了之前的笔记做参考,感觉这个笔记还是很有用的,因此发出来和大家分享。  1、case…end (具体的值)  case后面有值,相当于c#中的switch ...

    sql2000查看数据库表结构.sql

    --sql server 2000 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = a.name, 标识...

Global site tag (gtag.js) - Google Analytics