http://xiangai.taobao.com
http://shop148612228.taobao.com

sql 获取 一列的值显示一行

sql 获取 一列的值显示一行 

create table tb(col varchar(20)) insert tb values ('a') insert tb values ('b') insert tb values ('c') insert tb values ('d') insert tb values ('e') go select * from tb --方法一 declare @sql varchar(1000) set @sql = '' select @sql = @sql + t.col + ',' from (select col from tb) as t set @sql='select result = ''' + left(@sql , len(@sql) - 1) + '''' exec(@sql) /* result     ---------- a,b,c,d,e, */

--方法二 declare @output varchar(8000) select @output = coalesce(@output + ',' , '') + col from tb    --特别提醒:sql server 中 NUll和字符的"+"操作.结果仍然是NULL print @output /* a,b,c,d,e */

drop table tb

COALESCE (Transact-SQL) 返回其参数中第一个非空表达式。 返回数据类型优先级最高的 expression 的数据类型。如果所有表达式都不可为 Null,则结果的类型也不可为 Null。 如果所有参数均为 NULL,则 COALESCE 返回 NULL。 COALESCE(expression1,...n) 的功能与以下 CASE 表达式相同:

CASE

   WHEN (expression1 IS NOT NULL) THEN expression1

   WHEN (expression2 IS NOT NULL) THEN expression2

   ...

   ELSE expressionN

END

尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL。在 SQL Server 中,若要对包含具有非空参数的 COALESCE 的表达式创建索引,可以使用 PERSISTED 列属性将计算列持久化,如以下语句所示:

 

 

复制

CREATE TABLE #CheckSumTest     (         ID int identity ,         Num int DEFAULT ( RAND() * 100 ) ,         RowCheckSum AS COALESCE( CHECKSUM( id , num ) , 0 ) PERSISTED PRIMARY KEY     );

posted @ 2012-01-13 17:50  万事俱备就差个程序员  阅读(1598)  评论(0编辑  收藏  举报

http://xiangai.taobao.com
http://shop148612228.taobao.com
如果您觉得对您有帮助.领个红包吧.谢谢.
支付宝红包
微信打赏 支付宝打赏