Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当where语句中有NOTNULL子句时,为什么查询返回空值_Sql Server - Fatal编程技术网

Sql server 当where语句中有NOTNULL子句时,为什么查询返回空值

Sql server 当where语句中有NOTNULL子句时,为什么查询返回空值,sql-server,Sql Server,我试图获得不同的非空值,但这似乎不起作用: SELECT DISTINCT ITEM FROM TABLE WHERE ITEM IS NOT NULL 它返回不同的值,但也返回空值 样本: ITEM a a b b c c NULL 输出: a b c NULL 试试这个。“不为空”和“为空”不适用于空值。如果该列允许为空,则可以涵盖这两个方面 SELECT DISTINCT item FROM table WHERE ISNULL(item,'') <>

我试图获得不同的非空值,但这似乎不起作用:

SELECT DISTINCT ITEM 
FROM TABLE 
WHERE ITEM IS NOT NULL
它返回不同的值,但也返回空值

样本:

ITEM
a
a
b
b
c
c
NULL
输出:

a
b
c
NULL
试试这个。“不为空”和“为空”不适用于空值。如果该列允许为空,则可以涵盖这两个方面

SELECT 
   DISTINCT item FROM table 
WHERE 
   ISNULL(item,'') <> ''
选择
表中的不同项
哪里
ISNULL(项目“”)“”

此语句将返回
abc
,除非列中的字符串为NULL而不是
符号

SELECT DISTINCT ITEM FROM TABLE WHERE ITEM IS NOT NULL
要测试这一点,请尝试这些

--check for
SELECT DISTINCT ITEM FROM TABLE WHERE ITEM = 'NULL'

--modify original query
SELECT DISTINCT ITEM FROM TABLE WHERE NULLIF(ITEM, 'NULL') IS NOT NULL

检查项是否为Varchar类型,并在其中存储值“NULL”。如果是,请尝试以下查询:

select distinct item from table where ISNULL(item,'')<>'' and item <> "NULL"
从ISNULL(项“”)“”和项“NULL”所在的表中选择不同的项

您的查询没有问题。我怀疑你的数据。试试这个where子句
其中ITEM不为NULL和ITEM‘NULL’
您接受的答案无法解释您所说的结果。
ITEM
a
varchar(max)
列以前是
text
?如果是这样的话,那么为什么这个空白值会导致NULL或“NULL”输出?如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!此where子句将筛选空值和空值。但是,它不会过滤“NULL”值。我很困惑。@pst:我同意你的观点。如果存在字符串为NULL的值,则这将不起作用:如果IS NOT NULL失败,并且我们在输出中看到NULL,则它们必须存在-因此,对此回答-1我将接受批评,因为我不希望字符串“NULL”实际出现在数据中。此外,每个人都希望每个模式在存储数据方面都过于完美。如果列确实不接受null作为值(而不是“null”字符串),那么最好的选择是NULLIF(项,'null')不为null。该子句过于复杂,还将抑制空白字段!我认为
ITEM'NULL'和ITEM NOT NULL可能更适合这里。你的意思是“NULLIF(ITEM'NULL')'NULL'?@Ben Thul:NULLIF会将字符串'NULL'更改为ymbol/value NULL。所以这很有效。