[英]T-SQL find record and allow for nulls
CREATE TABLE [dbo].[Table1] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Column1] VARCHAR (3) NULL,
[Column2] VARCHAR (2) NULL,
[Column3] VARCHAR (255) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [TableCon] UNIQUE NONCLUSTERED ([Column1] ASC, [Column2] ASC, [Column3] ASC)
);
我的表將允許在Columns(1-3)中使用空值,但是基於這三個值,每條記錄都是唯一的。 然后,我將具有一個函數GetID(c1, c2, c3)
,該函數將返回Id或不返回任何值
我知道我知道這是行不通的:
SELECT Id
FROM Table1
WHERE Column1 = @c1
AND Column2 = @c2
AND Column3 = @c3
那我怎么寫這樣的東西呢?
由於與=
運算符比較時null
不會返回true
,因此您必須使用IS NULL
運算符顯式檢查它們:
SELECT Id
FROM Table1
WHERE ((Column1 = @c1) OR (Column1 IS NULL AND @c1 IS NULL)) AND
((Column2 = @c2) OR (Column2 IS NULL AND @c2 IS NULL)) AND
((Column3 = @c3) OR (Column3 IS NULL AND @c3 IS NULL))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.