Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условия WHERE по полученному значению / 6 сообщений из 6, страница 1 из 1
19.10.2021, 23:39
    #40105485
Сергей 29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
Добрый день, есть хранимая процедура в которую поступают значения переменных по своему состоянию способных быть null или не пустыми.
К Примеру.
Код: sql
1.
2.
INSERT INTO @TabResult ([IDComment],[IDUser],[UserName],[Email],[DateUpdate],[Message]) SELECT TOP (@NumberRows) [IDComment],[IDUser],[UserName],[Email],[DateUpdate],[Message] 
FROM @TabbBuffer WHERE [IDComment] = (если переменная пустая то ищем IS NOT NULL а если со значением то ищем по значению) AND [UserName] = (если переменная пустая то ищем IS NOT NULL а если со значением то ищем по значению) AND [DateUpdate] BETWEEN  @DataBegin AND @DataEnd 



Как произвести присвоение значения поиска в колонки после WHERE в зависимости от состояния переменной пустая она или полная.
...
Рейтинг: 0 / 0
19.10.2021, 23:47
    #40105486
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
Сергей 29,

Код: sql
1.
2.
3.
4.
...
where ([IDComment]=@IDComment or (@IDComment is null and [IDComment] is not null))
  and ([UserName]=@UserName or (@UserName is null and [UserName] is not null))
  AND [DateUpdate] BETWEEN  @DataBegin AND @DataEnd
...
Рейтинг: 0 / 0
19.10.2021, 23:57
    #40105487
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
или так

Код: sql
1.
2.
3.
4.
...
where [IDComment]=isnull(@IDComment,[IDComment])
  and [UserName]=isnull(@UserName,[UserName])
  AND [DateUpdate] BETWEEN  @DataBegin AND @DataEnd
...
Рейтинг: 0 / 0
20.10.2021, 00:01
    #40105488
Сергей 29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
court,

Да оно работает но на половину как у и меня если к примеру [UserName]=@UserName(не пустое) то он ищет правильно , но как только в [UserName] = NULL приходит пустота он её и ищет, а мне нужно наоборот чтобы в этом случае выбирал по любому но не пустому значению. Ну то есть что то вроде [UserName] IS NOT NULL
...
Рейтинг: 0 / 0
20.10.2021, 05:32
    #40105491
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
Сергей 29,

что ты называешь "пустотой" ?
тут 22385656
авторзначения переменных по своему состоянию способных быть null или не пустыми
ты говоришь, что возможные значения параметров - "null или не пустыми"

по этому описанию
Сергей 29
court,

Да оно работает но на половину как у и меня если к примеру [UserName]=@UserName(не пустое) то он ищет правильно , но как только в [UserName] = NULL приходит пустота он её и ищет, а мне нужно наоборот чтобы в этом случае выбирал по любому но не пустому значению. Ну то есть что то вроде [UserName] IS NOT NULL

понятно, что передаёшь ты туда никакой не NULL
подозреваю, что "пустую строку" - ''
а это в МС СКЛ "две большие разницы" ...

если угадал, то
Код: sql
1.
2.
3.
4.
...
where [IDComment]=isnull(nullif(@IDComment,''),[IDComment])
  and [UserName]=isnull(nullif(@UserName,''),[UserName])
  AND [DateUpdate] BETWEEN  @DataBegin AND @DataEnd



пс
а вообще, тебе б поменьше "насиловать" свои "лингвистические способности"
сделал бы, как тут рекомендуют - Рекомендации по оформлению сообщений в форуме
небольшой пример данных + желаемый результат на этих данных, - было бы более чем достаточно
...
Рейтинг: 0 / 0
20.10.2021, 13:39
    #40105582
Сергей 29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Условия WHERE по полученному значению
Да спасибо тебе возможно я не правильно выразился там есть NULL и "" я их объявил как
Код: sql
1.
@UserName VARCHAR(MAX) = NULL, @DataBegin DATETIME = NULL, @DataEnd DATETIME = NULL


все отлично работает...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условия WHERE по полученному значению / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]