有人可以帮助我以简单的方式理解此查询的逻辑(SQL Server 2014中的T-SQL)吗?
Select
c.ContractID
From
dba.contract as c
Inner Join
dba.Person as r on (c.ContractID = r.ContractID
and IsNull(isPrimary, 0) = 1)
我不理解的部分是isNull(isPrimary, 0) = 1
。
这是什么意思?顺便说一句isPrimary
是dba.person
非常感谢你!
答案 0 :(得分:1)
isNull(isPrimary, 0) = 1
isNull是SQL的一个函数,用于验证null变量
以上片段描述好像isPrimary
变量为null然后将此null值替换为0.此方法的目的是处理空指针异常。
答案 1 :(得分:0)
如果IS_NULL
等于isPrimary
,则isPrimary
函数仅将NULL
的值替换为0。
只有在isPrimary
不为空时才会进行检查(因为如果是,则会将其替换为0)并且isPrimary
= 1。
SELECT c.contractid
FROM dba.contract AS c
INNER JOIN dba.person AS r ON (c.contractid = r.contractid AND isprimary = 1)
WHERE isprimary IS NOT NULL
答案 2 :(得分:0)
如果您想观察它的工作原理,可以在数据库中创建表格:
use [your_database_name];
create table dbo.test_table
(
t int null
);
insert into dbo.test_table
values (0), (1), (2), (NULL);
select t, isnull(t, 0) as function_result
from dbo.test_table
答案 3 :(得分:0)
示例脚本供您了解IsNull(isPrimary,0)= 1条件给出 结果并帮助处理Null指针异常。
DECLARE @table AS TABLE (Id int, isPrimary varchar(20))
INSERT INTO @table
SELECT 1,1001 UNION ALL
SELECT 2,1002 UNION ALL
SELECT 3,NULL UNION ALL
SELECT 4,1004
SELECT Id,ISNULL(isPrimary,0) UIdnum FROM @table
SELECT * FROM @table WHERE ISNULL(isPrimary,0)=1
SELECT * FROM @table WHERE ISNULL(isPrimary,0)=0