TSQL中有沒有簡單的函數可以替換下面的tsql?如何用內置的TSQL函數替換IS NULL和!=?
SELECT * FROM Users
WHERE (Username IS NULL OR Username != @username)
我可以寫下面的內容,但由於硬編碼的文本,這不是防彈的!
SELECT * FROM Users
WHERE ISNULL(Username, 'dummytext') != @username
感謝,
TSQL中有沒有簡單的函數可以替換下面的tsql?如何用內置的TSQL函數替換IS NULL和!=?
SELECT * FROM Users
WHERE (Username IS NULL OR Username != @username)
我可以寫下面的內容,但由於硬編碼的文本,這不是防彈的!
SELECT * FROM Users
WHERE ISNULL(Username, 'dummytext') != @username
感謝,
在這種情況下,我不認爲它值得擁有的UDF來管理這個條件。
(Username IS NULL OR Username != @username)
長字符
dbo.IsNullorNotEqual(Username, @Username)=0
長字符
當然,你可以做的函數名略短,但它不值得打破慣例,使功能通話較短。
此外,在這種情況下不使用UDF會讓您看到恰好爲發生了什麼事情。
丹尼爾提出很好的問題...
我3美分。
!=
操作是由最基礎的數據庫支持( this answer,<>
符合ANSI標準COALESCE()
而不是ISNULL()
但它仍然使用索引:(。我不確定你想達到什麼,但這有幫助嗎?
架構設置:
create table Users(Username varchar(99));
insert into Users(Username) values('Alice');
insert into Users(Username) values('Bob');
insert into Users(Username) values(null);
查詢1:
DECLARE @username varchar(99)
SET @username = 'Alice'
SELECT * FROM Users
EXCEPT
SELECT * FROM Users where Username = @username
結果:
| USERNAME |
------------
| (null) |
| Bob |
你想更換什麼?爲什麼? –
使用內置函數(如果存在並且更短)。 –
您的原始SQL很簡短明瞭。除非遇到性能問題,否則我認爲沒有理由替換它。如果你這樣做,你應該看傑克道格拉斯的答案,這可能能夠利用索引。 –