Подтвердить что ты не робот

Sql-запрос, если параметр null

У меня есть следующий запрос:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;

Теперь я хочу, чтобы, если?? NULL, все записи должны быть выбраны. Как я могу достичь этого в SQL? Благодаря

4b9b3361

Ответ 1

Вы также можете использовать функции IFNULL, COALESCE, NVL, ISNULL для проверки нулевого значения. Это зависит от вашей РСУБД.

MySQL

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);

или

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);

ORACLE

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);

SQL Server/ SYBASE:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);

Ответ 2

Попробуйте следующее:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;

Ответ 3

SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END

Это будет работать отлично, но вернет только ненулевые значения.

Ответ 4

Фолл. запрос будет обрабатывать случай, когда имя (значение столбца таблицы) также может быть NULL:

SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');