2013-09-18 6 views
1

Я пытаюсь выполнить простую задачу: выберите значение из 2 столбцов в таблице.SQL Server 2005: оператор if с возвращаемым значением

Если одно из значений null, то верните нуль или что-то еще.

Else возвращает значения.

SELECT 
    MobileAreaCode, Mobile 
FROM 
    TABLE_NAME 
WHERE 
    id = 123456789 

IF (MobileAreaCode is NULL OR Mobile is NULL) 
BEGIN 
    RETURN(1)--NULL 
END 
ELSE 
BEGIN 
    RETURN(MobileAreaCode+Mobile) 
END 

Помощь будет оценена

ответ

0

За свой комментарий ко мне, это то, что вы ищете:

ALTER PROCEDURE PRO_NAME (Identification INT) 
AS SELECT 
CASE WHEN CONVERT(MobileAreaCode, int)>1 OR 
CONVERT(Mobile, int)>1 THEN MobileAreaCode+Mobile 
End FROM TABLE_NAME WHERE Hp=(Identification) 
GO 

Старые идеи/информация .. Дайте этому попытку ..

SET NOCOUNT ON 
SELECT 
CASE WHEN MobileAreaCode is NOT NULL OR Mobile is NOT NULL THEN 
MobileAreaCode+Mobile 
END 
FROM 
    TABLE_NAME 
WHERE 
    id = 123456789 

Другой способ ..

SET NOCOUNT ON 
SELECT 
CASE WHEN CONVERT(MobileAreaCode, int)>1 OR CONVERT(Mobile, int)>1 THEN MobileAreaCode+Mobile End 
END 
FROM 
TABLE_NAME 
WHERE 
id = 123456789 

Использование ISNULL ..

SET NOCOUNT ON 
SELECT 
CASE WHEN NOT ISNULL(MobileAreaCode, 000) OR NOT ISNULL(Mobile, 000) THEN MobileAreaCode+Mobile End 
END 
FROM 
TABLE_NAME 
WHERE 
id = 123456789 
+0

извините за то, что принесли его сейчас, если я хочу добавить поддержку для пустых строк, я просто не добавляю MobileAreaCode <> '' OR Mobile <> '' –

+0

MobileAreaCode и Mobile являются NVARCHAR –

+0

MobileAreaCode и Mobile являются NVARCHAR –

2

Вы должны сохранять значения, которые вы выбрали в переменный SQL Server, так что вы можете проверить позже:

DECLARE @MobileAreaCode INT 
DECLARE @Mobile INT 

SELECT 
    @MobileAreaCode = MobileAreaCode, 
    @Mobile = Mobile 
FROM 
    TABLE_NAME 
WHERE 
    id = 123456789 

IF (@MobileAreaCode IS NULL OR @Mobile IS NULL) 
BEGIN 
    RETURN NULL 
END 
ELSE 
BEGIN 
    RETURN @MobileAreaCode + @Mobile 
END 

Я не знал, что datatype ваши столбцы (вы не упомянули об этом в своем вопросе), поэтому я просто предположил, что они INT - если нет, приспосабливайте по мере необходимости.

+0

Его работа не работает для меня. Я получаю возвращаемое значение некоторого числа в столбце, даже если значение другого столбца равно нулю. –

+0

Извините, мои плохие - некоторые из значений были пустыми и не имели значение null, но он возвращает 0 и не null –

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