[英]Considering empty string to null in query
我正在使用sql server R2
。 我有一个存储过程,我在其中传递了两个参数,分别为@username varchar(100)
和@password varchar(100)
。
现在,当我第一次从应用程序创建用户时,密码将为NULL。
我想查询返回匹配用户名和密码的记录。 问题是代码将empty string
传递给stored procedure
。 我想要一些考虑或自动将empty string to NULL
转换empty string to NULL
东西。 我已经有了使用if condition
解决方案,但是我想使用单个查询,而不是if条件。
编辑:
它是一个简单的存储过程:
CREATE PROCEDURE [dbo].[Pro_TblP]
(
@userName varchar(100),
@password varchar(100)
)
AS
BEGIN
IF (@password ='')
BEGIN
SELECT * FROM TblP
WHERE username = @userName AND password IS NULL AND IsDeleted = 0
END
ELSE
BEGIN
SELECT * FROM TblP
WHERE username = @userName AND password = @password AND IsDeleted = 0
END
END
GO
我想以单一表示形式组合查询。 不需要if条件。
CREATE PROCEDURE [dbo].[Pro_TblP]
(
@userName varchar(100),
@password varchar(100)
)
AS
BEGIN
SELECT * FROM TblP
WHERE username = @userName AND COALESCE(password,'') = @password AND IsDeleted = 0
END
GO
尝试下面的代码:@password为空字符串或null时,它将返回所有值。 当您在@password变量中传递字符串时,它将对其进行过滤。
CREATE PROCEDURE [dbo].[Pro_TblP]
(
@userName varchar(100),
@password varchar(100)
)
AS
BEGIN
SELECT * FROM TblP
WHERE username = @userName AND IsDeleted = 0
And (password = @password OR isnull(@password,'') = '')
END
尝试这个
alter PROCEDURE [dbo].[Pro_TblP]
(
@userName varchar(100),
@password varchar(100)=''
)
AS
BEGIN
BEGIN
SELECT * FROM TblP
WHERE username = @userName AND IsNull(password,'')=@password AND IsDeleted = 0
END
END
SELECT *
FROM TblP
WHERE username = @userName AND
IsDeleted = 0 AND
(
password = @password OR
password IS NULL AND @password = ''
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.