Мне нужно написать запрос для страницы входа, где пользователь может ввести либо адрес электронной почты (тип данных varchar), либо userid (int datatype). Как написать запрос для этого, не зная тип данных ввода?SQL-запрос для извлечения данных на основе либо электронной почты, либо userid
0
A
ответ
0
Ваш входной параметр должен быть varchar
. Затем в вашей процедуре используйте функцию ISNUMERIC
для проверки номера. Имеют два запроса, основанные на том, что с оператором IF в случае, если оно равно int
или varchar
.
DECLARE @userInput VARCHAR(50)
IF ISNUMERIC(@userInput) = 1
BEGIN
-- Your query with userid
END
ELSE
BEGIN
-- Your query with emailid
END
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
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 [email protected]
AND case when @userid=0 THEN 0 ELSE userid [email protected]
Примечание: Вы должны пройти «A» в качестве значения по умолчанию для email_id и 0 для идентификатора пользователя, или же вы можете передать необходимые входные
+0
вам следует использовать @dexter code.it дает желаемый ответ –
Ошибка: Процедура или функция «GetLoginDetails» ожидает параметр «@userId ', который не был предоставлен. – user1048278
Я отредактировал код, чтобы сделать @userId nullable – dexter