2013-09-18 5 views
0

У меня есть процедура, которая возвращает MobileAreaCode + Mobile, если они не являются нулевыми Я просто хочу добавить к ней поддержку для пустых строк, а также я попробовал (без дескриптора для пустой строки она работает)SQL Server 2005: как проверить пустую строку

ALTER PROCEDURE PROC_NAME 
    @Identification INT 
AS 
BEGIN 
    SELECT 
    CASE WHEN MobileAreaCode is NOT NULL OR Mobile is NOT NULL 
OR MobileAreaCode<>'' OR Mobile<>'' 
    THEN 
     MobileAreaCode+Mobile 
    END 
    FROM 
     TABLE_NAME 
    WHERE 
     id = 123456789 
END 
GO 

, который не работает и приводит следующее сообщение об ошибке:

Incorrect syntax near the keyword 'FROM'.

ответ

1

Вы можете использовать Использование NULLIF (Transact-SQL).

select nullif(MobileAreaCode, '')+nullif(Mobile, '') as MobileAreaCodeMobile 
from YourTable 

SQL Fiddle

+0

Спасибо большое! .. –

+0

Я использую выполнение скаляра в своем коде и когда я запускаю процедуру, он возвращает {} для нулевого значения (нулевое значение - когда я вызываю процедуру, но значения в столбцах неверны). Как я могу включить это в оператор if в свой код «что-то вроде» if (ExecuteScalar («Proc_name»! = null) * i use .net как язык –

+0

Я нашел ответ, который мне только что пришлось называть «ToString», и спросить, если это! = "" –

0
ALTER PROCEDURE PROC_NAME 
@Identification INT 
AS 
BEGIN 
SELECT 
CASE WHEN (MobileAreaCode is NOT NULL) AND (Mobile is NOT NULL) 
AND (len(MobileAreaCode)>0) AND (len(Mobile)>0) 
THEN 
    MobileAreaCode+Mobile 
END 
FROM 
    TABLE_NAME 
WHERE 
    id = 123456789 
END 
GO 
+0

не работает, за ваш ответ выше я получаю для значений Mobile = '' и MobileAreaCode = 555 -> 555 в результате. (оба являются nvarchar (50) –

+0

проверить сейчас или изменить на –

+0

не работает .. тот же результат. –

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