2017-01-20 2 views
0

Мне нужно написать запрос для страницы входа, где пользователь может ввести либо адрес электронной почты (тип данных varchar), либо userid (int datatype). Как написать запрос для этого, не зная тип данных ввода?SQL-запрос для извлечения данных на основе либо электронной почты, либо userid

ответ

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

Ошибка: Процедура или функция «GetLoginDetails» ожидает параметр «@userId ', который не был предоставлен. – user1048278

+0

Я отредактировал код, чтобы сделать @userId nullable – dexter

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 дает желаемый ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^