当我定义了一个“用户自定义表类型”,如:在(NULL)查询SQL服务器无法正常工作
CREATE TYPE [dbo].[BitType] AS TABLE(
[B] [bit] NULL
)
我在这个表变量放在0和空。 后来我做这个查询:
SELECT something FROM theTable WHERE item IN @theBitTypeTable
只会item=0
不item is null
简单地说:SELECT something FROM theTable WHERE item IN (0, NULL)
不工作(没有错误虽然) 它必须是SELECT something FROM theTable WHERE item=0 OR item IS NULL
所以,我的问题是,如果我喜欢使用用户定义表类型,但我也需要使用NULL值。如何正确执行查询以获得包含空项的结果。
谢谢(顺便说一句,我使用的MS SQL Server 2008 R2)
好主意,所以,而不是创建BitType,也许我需要创建一个TinyintType表变量,然后我不需要施放。将尝试 – 2012-01-05 05:13:48
是的,数据类型的大小是一样的,所以你不会失去性能,但会增加多功能性 – 2012-01-05 05:14:49
其他比较*不*返回'false',它们返回'未知'。如果在这样的比较中放置一个“NOT()” - “NOT(1 = NULL)”不是“true”,那么区别很明显。 – 2012-01-05 07:05:44