簡體   English   中英

T-SQL查找記錄並允許為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM