例如:
SELECT *
FROM Table t
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key)
Run Code Online (Sandbox Code Playgroud)
如果@key IS NULL的计算结果为true,那么@key IS是否为NULL并且@key = t.Key是否已计算?
如果不是,为什么不呢?
如果是,是否有保证?它是ANSI SQL的一部分还是特定于数据库?
如果是数据库特定的,SqlServer?甲骨文?MySQL的?
参考:短路评估
我将客户记录插入到表中,如果已存在同名记录,我将为新插入的记录分配相同的ID.
假设表T有此记录:
ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 |04/03/2014
Run Code Online (Sandbox Code Playgroud)
我从表A中插入这个:
Name| Phone_Number
Sam | 333333
Run Code Online (Sandbox Code Playgroud)
插入后,表T应该具有:
ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 | 04/03/2014
105| Sam | 333333 | 04/04/2014
Run Code Online (Sandbox Code Playgroud)
没有上述变化,它看起来像:
INSERT INTO T SELECT CustID.nextval,Name,Phone_Number,SYSDATE FROM A;
Run Code Online (Sandbox Code Playgroud)
我在考虑使用,
INSERT INTO T
SELECT CASE
WHEN NOT EXISTS(select null from T WHERE T.Name=A.Name) THEN CustID.nextVal
ELSE (select ID from …Run Code Online (Sandbox Code Playgroud)