选择长度小于8个字符的所有,且不为null,且不为空

问题描述 投票:0回答:1

如何选择长度小于 8 个字符的所有值,并且不是空值也不是空值?

这就是我所拥有的,但它仍然拉入空值

select distinct
alphaidx, 
case when len(termdatex)<8 then termdatex end as termdatex
from table
where termdatex is not null and termdatex!=''
sql sql-server sql-server-2008 select string-length
1个回答
3
投票

你的问题出在你的

case
表达上。隐式地,任何未在
when
子句之一中处理的内容都将作为
null
返回。在这里,由于您没有在
where
子句中过滤掉它们,因此任何具有 8 个或更多字符的字符串都将从
null
表达式中作为
case
返回。要解决此问题,您可以将所有逻辑移至
where
子句:

SELECT DISTINCT alphaidx, termdatex
FROM   some_table
WHERE  termdatex IS NOT NULL AND termdatex != '' AND LEN(termdatex) < 8
© www.soinside.com 2019 - 2024. All rights reserved.