列执行MSSQL Server 处理Null

题记:写这篇博客要主是加深自己对列执行的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。

    Null,在T-SQL中是个很诡异的内容,它的处置方式不按常规来走,以至于我们在处置数据的时候,经常会变的手足无措,这里探讨下,null与字符类型拼接的情况。

    以下语句:

SELECT custid, country, region, city,
  country + N',' + region + N',' + city AS location
FROM Sales.Customers;
 

    执行结果:

custid      country         region city            location
----------- --------------- ------ --------------- -------------------
1           Germany         NULL   Berlin          NULL
2           Mexico          NULL   México D.F.     NULL
3           Mexico          NULL   México D.F.     NULL
4           UK              NULL   London          NULL
5           Sweden          NULL   Luleå           NULL
6           Germany         NULL   Mannheim        NULL
7           France          NULL   Strasbourg      NULL
8           Spain           NULL   Madrid          NULL
9           France          NULL   Marseille       NULL
10          Canada          BC     Tsawassen       Canada,BC,Tsawassen
11          UK              NULL   London          NULL
12          Argentina       NULL   Buenos Aires    NULL
13          Mexico          NULL   México D.F.     NULL
14          Switzerland     NULL   Bern            NULL
15          Brazil          SP     Sao Paulo       Brazil,SP,Sao Paulo
16          UK              NULL   London          NULL
17          Germany         NULL   Aachen          NULL
18          France          NULL   Nantes          NULL
19          UK              NULL   London          NULL
20          Austria         NULL   Graz            NULL
...

(91 row(s) affected)

    
location列很多为null这是因为country + N',' + region + N',' + city中的三个字段很多是null,此时如果我们希望值为null的列直接疏忽,而不是将整个表达式赋值为null。

    每日一道理
生命不是一篇"文摘",不接受平淡,只收藏精彩。她是一个完整的过程,是一个"连载",无论成功还是失败,她都不会在你背后留有空白;生命也不是一次彩排,走得不好还可以从头再来,她绝不给你第二次机会,走过去就无法回头。

    可做如下处置:

SET CONCAT_NULL_YIELDS_NULL OFF;
SELECT custid, country, region, city,
  country + N',' + region + N',' + city AS location
FROM Sales.Customers;

    
执行结果:

custid      country         region city            location
----------- --------------- ------ --------------- -------------------
1           Germany         NULL   Berlin          Germany,,Berlin
2           Mexico          NULL   México D.F.     Mexico,,México D.F.
3           Mexico          NULL   México D.F.     Mexico,,México D.F.
4           UK              NULL   London          UK,,London
5           Sweden          NULL   Luleå           Sweden,,Luleå
6           Germany         NULL   Mannheim        Germany,,Mannheim
7           France          NULL   Strasbourg      France,,Strasbourg
8           Spain           NULL   Madrid          Spain,,Madrid
9           France          NULL   Marseille       France,,Marseille
10          Canada          BC     Tsawassen       Canada,BC,Tsawassen
11          UK              NULL   London          UK,,London
12          Argentina       NULL   Buenos Aires    Argentina,,Buenos Aires
13          Mexico          NULL   México D.F.     Mexico,,México D.F.
14          Switzerland     NULL   Bern            Switzerland,,Bern
15          Brazil          SP     Sao Paulo       Brazil,SP,Sao Paulo
16          UK              NULL   London          UK,,London
17          Germany         NULL   Aachen          Germany,,Aachen
18          France          NULL   Nantes          France,,Nantes
19          UK              NULL   London          UK,,London
20          Austria         NULL   Graz            Austria,,Graz
...

(91 row(s) affected)

    

 

文章结束给大家分享下程序员的一些笑话语录: 有一天,一个男人穿越森林的时候,听到一个细微的声音叫住他。他低头一看,是一只青蛙。
“如果你亲我一下,我会变成一个美丽的公主哦。”男人一言不发,把青蛙捡起来,放入口袋。
“如果你亲我一下,我会变成一个美丽的公主哦。而且,我会告诉我遇到的每一个人,你是多么聪明和勇敢,你是我的英雄。”男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一星期。”男人又把青蛙拿出来,对着它微微一笑,把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一年,而且你可以对我做任何事。”再一次,男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
  最后,青蛙无力地问:“我开出了这么好的条件,为什么你还不肯吻我?”男人说:“我是一个程序员,我可没时间和什么公主鬼混。不过,拥有一个会说话的青蛙,倒是蛮酷的。”

--------------------------------- 原创文章 By
列和执行
---------------------------------

posted @ 2013-05-30 20:29  xinyuyuanm  阅读(345)  评论(0编辑  收藏  举报