2016-02-10 4 views
-1

ищет наиболее эффективный способ использования этого условия для принятия значений NULL и BLANK.SQL like Clause (нулевые и пустые значения)

and region.Description like isnull(@Region, N'') + N'%' 

Этот запрос работает для NULLS, однако для значений EMTPY он не работает. Любые идеи по настройке для выполнения обоих?

+0

SQL Server 2008 –

+0

попытка ISNULL (NULLIF (@Region, ''), N) – prats1411

ответ

0

Я не совсем уверен, что вы пытаетесь сделать, или какую базу данных вы используете. Но в зависимости от ответов на эти вопросы, я предполагаю, что COALESCE может сделать трюк для вас лучше, чем ISNULL.

+0

Спасибо. SQL Server 2008. Если COALESCE - лучший вариант - вы хотите понять, как это повлиять на запрос. Я просто заменю ISNULL –

+0

Вы бы, но при отражении, я думаю, COALESCE предоставит те же результаты в этой ситуации. Что может быть пустым или пустым? Region.Description или @Region? –

0

Лично я нахожу, что яснее проверять наличие NULL явно, а не делать какие-либо умные трюки с COALESCE() или ISNULL(). Затем просто включите пробелы, проверив длину строки после обрезки любых пробелов.

(region.Description LIKE @Region + '%' OR @Region IS NULL OR LEN(LTRIM(RTRIM(@Region)))=0) 
+0

Это сработало отлично. Поскольку я передаю значения параметров из одного отчета SSRS в другой, этот код поможет мне передать пустое значение как «значение» вместо нулевого значения, которое отбрасывает прокрутку. благодаря –

0
AND( (isnull(@Region, N'')='' AND isnull(region.Description,'')='') 
OR(isnull(@Region, N'')<>'' AND region.Description like @Region + N'%')) 
Смежные вопросы