列执行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
列和执行
---------------------------------