如何检查一个 Sql server 字符串是否为 null 或者为空

258
我想检查数据,但如果数据为空或者为空字符串,则忽略它。目前查询的语句如下...
Select              
Coalesce(listing.OfferText, company.OfferText, '') As Offer_Text,         
from tbl_directorylisting listing  
 Inner Join tbl_companymaster company            
  On listing.company_id= company.company_id      

但是如果listing.Offertext是一个空字符串,或者它是null,我想要获取company.OfferTex
什么是最佳的解决方案?
19个回答

4
Select              
Coalesce(NullIf(listing.OfferText, ''), NullIf(company.OfferText, ''), '') As Offer_Text,         
from tbl_directorylisting listing  
 Inner Join tbl_companymaster company            
  On listing.company_id= company.company_id

第一个回答(5年后)使用NULLIF()和coalesce将company.OfferText转换为空字符串,值得一赞。然而,这里的第二个NULLIF()调用没有任何作用,因为如果该值是空字符串,您最终还是会合并回一个空字符串。 - Joel Coehoorn

3

这里有一个解决方案,但我不确定它是否是最好的...

Select              
Coalesce(Case When Len(listing.Offer_Text) = 0 Then Null Else listing.Offer_Text End, company.Offer_Text, '') As Offer_Text,         
from tbl_directorylisting listing  
 Inner Join tbl_companymaster company            
  On listing.company_id= company.company_id

3
SELECT              
    COALESCE(listing.OfferText, 'company.OfferText') AS Offer_Text,         
FROM 
    tbl_directorylisting listing  
    INNER JOIN tbl_companymaster company ON listing.company_id= company.company_id

3

要检查变量是否为空,请使用以下代码:

IF LEN(ISNULL(@var, '')) = 0
    -- Is empty or NULL
ELSE
    -- Is not empty and is not NULL

2
< p > [Column_name] > ' ' 排除了 Null 和空字符串。单引号之间有一个空格。 < /p >

2
为了防止 SQL 查询结果中出现空值或 Null 值的记录,我们可以简单地添加 ..... WHERE Column_name != '' or 'null'。请注意保留 HTML 标签。

这将是第一个被调用的端口,但如果您正在执行诸如从表中多个列连接等操作,则这将排除该行而不仅仅是显示该列的空白。 - Paul C

2
[Column_name] IS NULL OR LEN(RTRIM(LTRIM([Column_name]))) = 0

1
处理 VARCHAR/NVARCHAR 数据时,大多数其他示例将空格视为空字符串,等同于 C# 函数 IsNullOrWhiteSpace
此版本尊重空格,并与 C# 函数 IsNullOrEmpty 相同。
IIF(ISNULL(DATALENGTH(val), 0) = 0, whenTrueValue, whenFalseValue)

Simple test:

SELECT
    '"' + val + '"' AS [StrValue],
    IIF(ISNULL(DATALENGTH(val), 0) = 0, 'TRUE', 'FALSE') AS IsNullOrEmpty
FROM ( VALUES 
    (NULL), 
    (''), 
    (' '), 
    ('a'), 
    ('a ')
) S (val)

0

这也适用于空格。

(len(rtrim(ltrim(isnull(MyField,'')))) !=0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接