Выбор, где столбец равен значению или равен нулю с падежами (Ms sql) - PullRequest
0 голосов
/ 12 февраля 2020

В приведенном ниже запросе я выполняю поиск в таблице, называемой сваркой, в этой таблице есть столбец с именем Welds.Prefix, в котором есть NULL-строки, строки с фактическими значениями и строки с пустым значением. Мне нужна помощь в изменении моего запроса ниже, чтобы, когда пользователь вводит непустое и непустое значение в @Prefix, он находил соответствующие строки. И когда @Prefix будет пустым, он найдет, где Welds.Prefix пуст или где Welds.Prefix нулевой, но я не уверен, как go узнать об этом, я понимаю, что мог бы сделать запрос на обновление и изменить столбцы с нулевыми значениями в пустые места, но я ищу другой путь. Я запускаю запрос ниже и получаю сообщение об ошибке «Неверный синтаксис рядом с ключевым словом« ИЛИ »». Я понимаю, почему я получаю ошибку, но я не уверен, как ее исправить, спасибо.

Примечание: @Prefix будет будет введен в интерфейс и не будет привязан только к '', я просто поместил его в запрос для вопросов.

@Prefix varchar(30) = ''

select * 
from welds
WHERE Welds.Prefix = CASE WHEN @Prefix <> '' THEN @Prefix END
          OR Welds.Prefix = CASE WHEN @Prefix = '' THEN '' OR IS NULL END

РЕДАКТИРОВАТЬ: я в основном хочу выбрать строки, где Weld.Prefix имеет значение null и где Weld.Prefix = '' когда @Prefix = ''

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Вы можете попробовать это

DECLARE @Prefix VARCHAR(30) = ''

SELECT *
FROM welds
WHERE (ISNULL(@Prefix, '') = '')
    OR (
        ISNULL(@Prefix, '') <> ''
        AND ISNULL(Welds.Prefix, '') = @Prefix
        )
0 голосов
/ 12 февраля 2020

Я думаю, что это логи c Вы хотите:

SELECT * 
FROM welds
WHERE Welds.Prefix = @sPrefix OR
      (@sPrefix = '' AND NULLIF(Welds.Prefix, '') IS NULL)
...