sql - выбрать все записи с установленным полем или ноль - PullRequest
2 голосов
/ 08 марта 2011

У меня есть хранимая процедура, в которой я хочу выбрать все записи таблицы T с полем user_id, равным параметру p_user_id:

SELECT * FROM T WHERE user_id = p_user_id;

но если параметр NULL (или ноль, если вы предпочитаете), я хочу все записи. То есть я не могу думать о случае в предложении WHERE.

Ответы [ 4 ]

2 голосов
/ 08 марта 2011
 SELECT * FROM T WHERE user_id = p_user_id or p_user_id is null or p_user_id = 0;
2 голосов
/ 08 марта 2011
SELECT * FROM T
WHERE user_id = p_user_id
OR p_user_id is null
OR p_user_id = 0

Должно работать.

Здесь предложение user_id = p_user_id будет равно UNKNOWN, если p_user_id имеет значение null, что в большинстве баз данных будет иметь результат несоответствия ни одной строки ( sybase является исключением).

0 голосов
/ 08 марта 2011

Если я правильно понимаю, вы хотите это:

IF p_user_id IS NULL
    (SELECT * FROM T);
ELSE
    (SELECT * FROM T WHERE user_id = p_user_id)
0 голосов
/ 08 марта 2011

SELECT * FROM T WHERE user_id = @p_user_id OR @p_user_id IS NULL

Предложение OR имеет значение true, если параметр имеет значение NULL (NULL IS NULL == TRUE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...