2013-11-20 100 views
0

是否有一種快速檢查Microsoft SQL Server Management Studio中給定值是否唯一的函數?不包括以下各項:檢查t-sql中的值是否唯一的最佳方法

DECLARE @username VARCHAR(45) 
SET @username = 'foo' 

DECLARE @checkTable INT 

-- finds how many rows contain 'foo' 
SET @checkTable = (SELECT COUNT(1) 
        FROM table1 AS t 
        WHERE t.username = @username) 
IF @checkTable = 0 
-- Unique! 

如果你有一個大表,這似乎是這將是昂貴的。我需要允許用戶在保持唯一的同時更改他/她的現有用戶名。

感謝

+1

是表索引的'username'? – HABO

+0

@HABO不,它不是。它被編入索引編號 –

+0

你究竟在這裏檢查什麼?當然,它應該是'IF @checkTable = 1'來檢查唯一性(即只有一個現有的行具有該值)。還是你檢查目前沒有匹配的行?在這種情況下,您應該使用唯一的約束來強制執行此操作,並且支持索引將使其成爲高效查找。 –

回答

3

這樣可以節省幾個大字......

DECLARE @username VARCHAR(45) 
SET @username = 'foo' 

IF NOT EXISTS(SELECT 1 FROM table1 WHERE username = @username) 
BEGIN 
    -- Unique! 
END 
+0

+1擊敗我。 – Kermit

+0

@FreshPrinceOfSO,更容易的SQL問題總是打字比賽:) – David

+0

對不起,我正在尋找,看看是否有更快的方式來這是。我編輯了這個問題。 –

1
IF EXISTS (SELECT 1 FROM table1 WHERE username = @Username) 
BEGIN 
    RETURN 'exists' 
END 
ELSE 
BEGIN 
    RETURN 'not exists' 
END; 
相關問題