TSQL中是否有任何可以替换下面的tsql的简单函数?
SELECT * FROM Users
WHERE (Username IS NULL OR Username != @username)
我可以写下面但由于硬编码文本而不是防弹!
SELECT * FROM Users
WHERE ISNULL(Username, 'dummytext') != @username
谢谢,
答案 0 :(得分:3)
在这种情况下,我认为使用UDF来管理这种情况并不值得。
(Username IS NULL OR Username != @username)
43 个字符
dbo.IsNullorNotEqual(Username, @Username)=0
43 个字符
当然,您可以使函数名称稍微缩短,但不值得破坏约定以使函数调用更短。
此外,在这个实例中不使用UDF会让你看到完全发生了什么。
答案 1 :(得分:2)
我的3美分:
!=
运算符(基于this answer,<>
符合ANSI标准。COALESCE()
代替ISNULL()
,但它仍然可以使用索引进行阻止:(。答案 2 :(得分:2)
我不确定你想要达到的目的,但这有帮助吗?
架构设置:
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 |