我正在使用SQL Server 2016并遇到了isnull函数的问题。该字段中的值是一个空格但仍然被选中,下面是我的代码:
SELECT * FROM table
WHERE isnull (field1,'')<>''
AND field1<>' '
如果我从field1复制并粘贴,则它是一个空格&#39; &#39;
由于
答案 0 :(得分:6)
您的空间不是正常空间(十六进制0x20,十进制32)
select ASCII(LEFT(field1, 1), * From table
where isnull (field1,'')<>''
很可能是
之一答案 1 :(得分:0)
我试图将所有可能的组合插入到插入中..试试这个
Create table #t(Field1 varchar(100))
Insert into #t values
(NULL), (' '), (' '), ('a'),('')
select field1 From #t
where LTRIM(RTRIM(field1)) <> ''
输出:
field1
---------
a
答案 2 :(得分:0)
正如我们通过评论和其他答案(尤其是gbn)所发现的那样,除了空间之外,还有其他不可见的字符。
但是,这并没有为您提供如何编写查询的解决方案,例如:
where field1 NOT IN (CHAR(0), CHAR(9), CHAR(10), CHAR(11), CHAR(12), CHAR(13), CHAR(14), CHAR(32), CHAR(160))
答案 3 :(得分:0)
我发现此问题的解决方案是:
SELECT ISNULL(NULLIF(field1,''), field2)