我必须为登录页面编写查询,用户可以在其中输入emailid(varchar数据类型)或userid(int数据类型)。如何在不知道输入的数据类型的情况下为此编写查询?
答案 0 :(得分:1)
CREATE PROCEDURE my_stored_procedure
@emailId nvarchar(50) = NULL,
@userId int = NULL
AS
SET NOCOUNT ON;
IF (@emailId IS NOT NULL) AND (LEN(@emailId) > 0)
SELECT * FROM MYTABLE WHERE EmailId = @emailId
ELSE
SELECT * FROM MYTABLE WHERE UserId = @UserId
GO
答案 1 :(得分:0)
您的输入参数应为varchar
类型。
然后在您的过程中使用ISNUMERIC
函数来检查数字。如果是int
或varchar
,则根据IF语句进行两次查询。
DECLARE @userInput VARCHAR(50)
IF ISNUMERIC(@userInput) = 1
BEGIN
-- Your query with userid
END
ELSE
BEGIN
-- Your query with emailid
END
答案 2 :(得分:0)
尝试此查询可能会对您有所帮助。
DECLARE @emailid varchar(250),@userid bigint
set @emailid='A'
SET @userid=3
select * from yourtable
where case when @emailid='A' THEN 'A' ELSE emailid END=@emailid
AND case when @userid=0 THEN 0 ELSE userid END=@userid
注意:您应该通过' A'作为email_id的默认值,对于userid为0,否则您可以传递所需的输入