Sql server 缺少Tsql空值
当我运行下面的脚本时,我在第一个查询中得到空值,但在第二个查询中没有。如何在排除这一个uniqueidentifier值的同时,在第二个查询中仍然包含Null值Sql server 缺少Tsql空值,sql-server,tsql,null,uniqueidentifier,Sql Server,Tsql,Null,Uniqueidentifier,当我运行下面的脚本时,我在第一个查询中得到空值,但在第二个查询中没有。如何在排除这一个uniqueidentifier值的同时,在第二个查询中仍然包含Null值 drop table program_field create table program_field (p uniqueidentifier ) insert program_field values ('10C8BCA5-011C-48B9-BF46-03B88EBF5005'), ('16BD98AA-2323-4619-8
drop table program_field
create table program_field
(p uniqueidentifier
)
insert program_field values ('10C8BCA5-011C-48B9-BF46-03B88EBF5005'),
('16BD98AA-2323-4619-8BAF-0C19F90642FF'),
(Null)
select p from program_field
select p from program_field where p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'
drop table program\u字段
“创建表程序”字段
(p)唯一标识符
)
插入程序字段值('10C8BCA5-011C-48B9-BF46-03B88EBF5005'),
('16BD98AA-2323-4619-8BAF-0C19F90642FF'),
(空)
从program_字段中选择p
从p'10C8BCA5-011C-48B9-BF46-03B88EBF5005'的程序_字段中选择p
从p'10C8BCA5-011C-48B9-BF46-03B88EBF5005'或p为空的程序_字段中选择p
从p'10C8BCA5-011C-48B9-BF46-03B88EBF5005'或p为空的程序_字段中选择p
您可以这样做
select p from program_field where coalesce(p,'') <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'
从程序_字段中选择p,其中聚结(p),'10C8BCA5-011C-48B9-BF46-03B88EBF5005'
您可以这样做
select p from program_field where coalesce(p,'') <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'
从程序_字段中选择p,其中聚结(p),'10C8BCA5-011C-48B9-BF46-03B88EBF5005'
您需要将where子句中的IS NULL
或IS NOT NULL
表达式与NULL
值进行比较,例如:
p'10C8BCA5-011C-48B9-BF46-03B88EBF5005'或p为空
您需要为空
或不为空
在where子句中的表达式
与空
值进行比较,如:
p'10C8BCA5-011C-48B9-BF46-03B88EBF5005'或p为空
这将给出转换错误。无法将空字符串强制转换为唯一标识符。您可以用COALESCE替换ISNULL以使其正常工作。@AnupAgrawal:Oops!没有完全阅读问题。现在更新@按摩师:谢谢你,伙计!这将导致转换错误。无法将空字符串强制转换为唯一标识符。您可以用COALESCE替换ISNULL以使其正常工作。@AnupAgrawal:Oops!没有完全阅读问题。现在更新@按摩师:谢谢你,伙计!NULL“10C8BCA5-011C-48B9-BF46-03B88EBF5005”是错误的语句,因此您的第二次查询不会返回它。空值不小于、大于或等于任何值。这就是为什么您需要对已提供的答案中描述的空条件进行单独比较的原因。空“10C8BCA5-011C-48B9-BF46-03B88EBF5005”是错误的陈述,因此您的第二次查询不会返回它。空值不小于、大于或等于任何值。这就是为什么您需要对空条件进行单独的比较,如已经提供的答案中所述。