当前位置:  开发笔记 > 数据库 > 正文

如何检查Sql服务器字符串是空还是空

如何解决《如何检查Sql服务器字符串是空还是空》经验,为你挑选了7个好方法。

我想检查数据但是如果它为null或为空则忽略它.目前查询如下......

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      

但是我想得到company.OfferText,如果listing.Offertext是一个空字符串,以及它是否为null.

什么是性能最佳的解决方案?



1> Martin Ba..:

我认为这:

SELECT 
  ISNULL(NULLIF(listing.Offer_Text, ''), company.Offer_Text) AS Offer_Text
FROM ...

是最优雅的解决方案.

并在伪代码中分解一下:

// a) NULLIF:
if (listing.Offer_Text == '')
  temp := null;
else
  temp := listing.Offer_Text; // may now be null or non-null, but not ''
// b) ISNULL:
if (temp is null)
  result := true;
else
  result := false;


@irfandar - 好吧,如果你想把所有空格的字符串视为空,请继续使用trim.否则,包含所有空格的字符串不为空.
我们不应该使用装饰来确保一切按计划进行

2> Joel Coehoor..:
SELECT
   CASE WHEN LEN(listing.OfferText) > 0 THEN listing.OfferText 
        ELSE COALESCE(Company.OfferText, '') END 
   AS Offer_Text,

... 

在此示例中,如果listing.OfferText为NULL,则LEN()函数也应返回NULL,但仍不是> 0.

更新

自从发布这篇文章以来的5年半里,我已经学到了一些东西,现在做的却大不相同:

COALESCE(NULLIF(listing.OfferText,''), Company.OfferText, '')

这类似于已接受的答案,但它也有一个回退的情况Company.OfferText也是null.其他当前使用的答案NULLIF()都没有这样做.



3> Patrick Harr..:
Select              
CASE
    WHEN listing.OfferText is null or listing.OfferText = '' THEN company.OfferText
    ELSE COALESCE(Company.OfferText, '')
END As Offer_Text,         
from tbl_directorylisting listing  
 Inner Join tbl_companymaster company            
  On listing.company_id= company.company_id



4> 小智..:

这是另一个解决方案:

SELECT Isnull(Nullif(listing.offertext, ''), company.offertext) AS offer_text, 
FROM   tbl_directorylisting listing 
       INNER JOIN tbl_companymaster company 
         ON listing.company_id = company.company_id



5> Code Trawler..:

您可以ISNULL根据已知输出使用并检查答案:

SELECT case when ISNULL(col1, '') = '' then '' else col1 END AS COL1 FROM TEST



6> lkurylo..:

在SQL Server 2012中IIF,您可以使用它,例如,您可以使用它

SELECT IIF(field IS NULL, 1, 0) AS IsNull

您可以通过相同的方式检查字段是否为空.



7> Zach Johnson..:

使用LEN函数检查空值或空值。您可以只使用LEN(@SomeVarcharParm)>0。如果值为NULL,''或'',则将返回false。这是因为LEN(NULL)返回NULL,而NULL> 0返回false。另外,LEN('')返回0。

SELECT 
 CASE WHEN NULL > 0 THEN 'NULL > 0 = true' ELSE 'NULL > 0 = false' END,
 CASE WHEN LEN(NULL) > 0 THEN 'LEN(NULL) = true' ELSE 'LEN(NULL) = false' END,
 CASE WHEN LEN('') > 0 THEN 'LEN('''') > 0 = true' ELSE 'LEN('''') > 0 = false' END,
 CASE WHEN LEN(' ') > 0 THEN 'LEN('' '') > 0 = true' ELSE 'LEN('' '') > 0 = false' END,
 CASE WHEN LEN(' test ') > 0 THEN 'LEN('' test '') > 0 = true' ELSE 'LEN('' test '') > 0 = false' END

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有