TSQL 中是否有任何简单的函数可以替换下面的 tsql?
SELECT * FROM Users
WHERE (Username IS NULL OR Username != @username)
我可以写下面的内容,但由于硬编码文本,这不是防弹的!
SELECT * FROM Users
WHERE ISNULL(Username, 'dummytext') != @username
谢谢,
TSQL 中是否有任何简单的函数可以替换下面的 tsql?
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)
长度为43 个字符
dbo.IsNullorNotEqual(Username, @Username)=0
长度为43 个字符
当然,您可以使函数名称稍短一些,但不值得打破约定来缩短函数调用。
此外,在这种情况下不使用 UDF 会让您确切地看到发生了什么。
丹尼尔问了个好问题……
我的 3 美分:
!=
,大多数数据库都支持运算符(基于此答案,<>
符合 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 |