如何选择包含NULL的多个列值而不重复列名?

时间:2011-07-02 07:54:30

标签: sql sqlite

到目前为止,我这样做:

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

我有两次重复列名的问题,因为in()不能将null作为参数,它也不返回错误,只返回0列。 (也许一些可以引用最后一个名为列的神奇变量?)

3 个答案:

答案 0 :(得分:1)

此:

'column'

是字符串文字,而不是列名。所以这个:

'column' in(var1,var2,var3) or 'column' is NULL
除非var1var2var3恰好是字符串'column',否则

将无法匹配任何内容。尝试删除列名称上的引号:

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

答案 1 :(得分:1)

不重复列名的另一个选项:

SELECT * FROM table_name WHERE coalesce(column,'NULL') in (var1,var2,var3,'NULL')

答案 2 :(得分:0)

你可以做一个工会选择:

SELECT 
  * 
FROM 
  `table_name` 
WHERE 
  `column` IN (var1, var2, var3)
UNION
  SELECT
    *
  FROM
    `table_name`
  WHERE
    `column` IS NULL