Как выбрать для нескольких значений столбца, включая NULL, не повторяя имя столбца? - PullRequest
0 голосов
/ 02 июля 2011

Пока я делаю это так:

SELECT * FROM table_name WHERE column in(var1,var2,var3) or column is NULL

У меня есть проблемы с повторением имени столбца два раза, поскольку in () не может принимать значение null в качестве аргумента, он также не возвращает ошибки, только 0 столбцов. (Может быть, некоторые магические переменные, которые могут ссылаться на последний вызванный столбец?)

Ответы [ 3 ]

1 голос
/ 24 декабря 2013

Другой вариант без повторения имени столбца:

SELECT * FROM table_name WHERE coalesce(column,'NULL') in (var1,var2,var3,'NULL')
1 голос
/ 02 июля 2011

Это:

'column'

- строковый литерал, а не имя столбца.Так что это:

'column' in(var1,var2,var3) or 'column' is NULL

не будет ничего совпадать, если var1, var2 или var3 не будет строкой 'column'.Попробуйте опустить кавычки на имя столбца:

SELECT * FROM table_name WHERE column in (var1, var2, var3) or column is NULL
0 голосов
/ 02 июля 2011

Вы можете выбрать объединение:

SELECT 
  * 
FROM 
  `table_name` 
WHERE 
  `column` IN (var1, var2, var3)
UNION
  SELECT
    *
  FROM
    `table_name`
  WHERE
    `column` IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...