sql语句 not in在表里有空值时就查询不到

对,就是这个问题。
上周刚处理一个。
空值和实际类型值直接比,肯定不行。
得用isnull函数。
把null转成字符型才行。
不然系统会懵。
你自己看。

SqlServer Stuff

上周,我那个朋友在学SqlServer的STUFF函数。
他说这个函数挺有用的,能帮他把字符串里的某些部分替换掉。
他给我举了个例子,说要用这个函数把用户名用逗号分隔开。

2 02 3 年,他告诉我这个函数的基本语法是:STUFF(character_expression, start, length, replaceWith_expression)。
然后他给我看了个示例,他说先得有个原始字符串,比如用户名。

地点是某个公司的数据库服务器,他说他用了这个SQL语句:SELECT STUFF((','+UserName),1 ,1 ,'')。
这个语句的意思是,在每个用户名前加上逗号,然后用STUFF函数把第一个逗号替换成空字符串。

我那个朋友解释说,他先用SELECT ','+UserName FROM @TAB FOR XML PATH(''),这样每个用户名前都会有一个逗号,但是因为FOR XML PATH('')的作用,逗号之间会有额外的逗号。

关键点在于,他说FOR XML PATH('')是SqlServer中合并多行数据为单行字符串的常用方法,而STUFF函数在这里是用来去除多余的逗号。

他说,通过这种方式,他可以清晰地理解SqlServer中STUFF函数的作用以及如何在具体场景中使用它。
我听了之后,觉得这个函数确实挺有用的,下次我也可以试试。
算了,你看着办吧。