我想检查数据,但如果它为空或空忽略它。目前查询如下…

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      

但我想找个伴。OfferText如果列表。Offertext是一个空字符串,如果它是null。

最好的解决方案是什么?


当前回答

COALESCE和NULLIF的简单组合应该可以做到:

SELECT             
  Coalesce(NULLIF(listing.OfferText, ''), company.OfferText) As Offer_Text
...

注意:如果希望语句返回空字符串而不是NULL(如果两个值都为NULL),则添加另一个空字符串作为最后一个COALESCE参数。

其他回答

这也迎合了空间。

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

这里有另一个解决方案:

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

在SQL Server 2012中你有IIF,例如你可以像这样使用它

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

同样的方法可以检查字段是否为空。

这个语法:

SELECT *
FROM tbl_directorylisting listing
WHERE (civilite_etudiant IS NULL)

在Microsoft SQL Server 2008 (SP3)为我工作

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

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