У меня есть таблица имен:
Иоанн
Петр
Петр-Павел
Мэри
У меня есть выпадающий список этих имен иЯ добавил «Все» в качестве опции вверху.
Я хочу передать имя, выбранное в раскрывающемся списке, в качестве параметра предложения where.
Что я пытаюсь сделатьУ do есть только условие where, если name не передано как 'All'
SELECT City, State
FROM EmployeeDetails
WHERE @NAME =
CASE @NAME
WHEN 'All' THEN '1=1'
ELSE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
Я не могу заставить это работать.Инструкция ELSE выдает ошибку «Неверный синтаксис рядом со словом« LIKE ».
Просмотр других найденных мной вопросов StackOverflow:
- Операторы CASE возвращают скалярзначения, поэтому имеет смысл, что ему не нравится мой оператор LIKE.
- Помещение предложения ELSE в одинарные кавычки не возвращает результатов (предложение breaks where)
- Попытка выполнить IF (@NAME)= 'All') ломает предложение where, и в каждом вопросе по StackOverflow консенсус заключается в том, чтобы превратить операторы IF в операторы CASE.
При выполнении предложения WHERE, не входящего в оператор CASE, он работает для оператораконкретное имя, например:
WHERE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
Если я найду Питера, он вернет 2 результата, как и ожидалось.Мэри 1 результат и т. Д.
Я, очевидно, не могу передать «Все» на это.