MS SQL Server 2008中的空处理
我不是SQL DBA,我遇到了一个问题。我们运行MS SQL 2008 server,并刚刚从MS SQL 2000升级了它。我正在尝试运行在MS SQL 2000中为DB创建的查询,并将结果用于我们的邮件列表MS SQL Server 2008中的空处理,sql,sql-server,sql-server-2008,null,Sql,Sql Server,Sql Server 2008,Null,我不是SQL DBA,我遇到了一个问题。我们运行MS SQL 2008 server,并刚刚从MS SQL 2000升级了它。我正在尝试运行在MS SQL 2000中为DB创建的查询,并将结果用于我们的邮件列表 查询是: SELECT DISTINCT Title, FirstName, MiddleInitial, LastName, Suffix, CompanyName, BAddress, BAddress2, BCity, BState, BZip FROM MailingExpo
查询是:
SELECT DISTINCT Title, FirstName, MiddleInitial, LastName, Suffix,
CompanyName, BAddress, BAddress2, BCity, BState, BZip
FROM MailingExportView
WHERE AdvanceMailing = 0
ORDER BY BZip, LastName
这给了我们类似的东西:
Title FirstName MiddleInitial LastName Suffix CompanyName BAddress BAddress2 BCity BState BZip
Mr. Bob NULL Smith NULL NULL 12345 Main , Anytown State, NULL NULL
我不想得到空值。如果字段为空,我希望它返回为空 我从其他网站和这里读过关于空处理的内容 我已尝试重新安排此项,以便ISNULL将Null放在不同的表中:
我在这里不知所措。有人能帮我吗?在需要空白的列周围缠绕聚结
COALESCE(MiddleInitial,'') AS MiddleInitial
对其他列重复此操作在需要空白的列周围环绕合并
COALESCE(MiddleInitial,'') AS MiddleInitial
对其他列重复此操作如果只需要空白而不是空值,请重试
合并(FieldThatMayBeNull,”)为FieldThatMayBeNull
如果您想要的是空白而不是空值,请尝试
合并(FieldThatMayBeNull“”)为FieldThatMayBeNull
将任何可能为空的字段的选择更改为ISNULL(列“”)
SELECT DISTINCT
ISNULL(Title, '') AS Title,
ISNULL(FirstName, '') FirstName,
ISNULL(MiddleInitial, '') MiddleInitial,
ISNULL(LastName, '') LastName,
ISNULL(Suffix, '') Suffix,
ISNULL(CompanyName, '') CompanyName,
ISNULL(BAddress, '') BAddress,
ISNULL(BAddress2, '') BAddress2,
ISNULL(BCity, '') BCity,
ISNULL(BState, '') BState,
ISNULL(BZip, '') BZip
FROM MailingExportView
WHERE AdvanceMailing = 0
ORDER BY BZip, LastName
将任何可能为空的字段的选择更改为
ISNULL(列“”)
SELECT DISTINCT
ISNULL(Title, '') AS Title,
ISNULL(FirstName, '') FirstName,
ISNULL(MiddleInitial, '') MiddleInitial,
ISNULL(LastName, '') LastName,
ISNULL(Suffix, '') Suffix,
ISNULL(CompanyName, '') CompanyName,
ISNULL(BAddress, '') BAddress,
ISNULL(BAddress2, '') BAddress2,
ISNULL(BCity, '') BCity,
ISNULL(BState, '') BState,
ISNULL(BZip, '') BZip
FROM MailingExportView
WHERE AdvanceMailing = 0
ORDER BY BZip, LastName
我想您可以在类似于以下内容的情况下使用ISNULL()函数:
SELECT DISTINCT ISNULL(Title, ''), ISNULL(FirstName, ''), ISNULL(MiddleInitial, ''), ISNULL(LastName, ''), ISNULL(Suffix, ''), ISNULL(CompanyName, ''), ISNULL(BAddress, ''), ISNULL(BAddress2, ''), ISNULL(BCity, ''), ISNULL(BState, ''), ISNULL(BZip, '') FROM MailingExportView WHERE AdvanceMailing = 0 ORDER BY BZip, LastName
我想您可以在类似于以下内容的情况下使用ISNULL()函数:
SELECT DISTINCT ISNULL(Title, ''), ISNULL(FirstName, ''), ISNULL(MiddleInitial, ''), ISNULL(LastName, ''), ISNULL(Suffix, ''), ISNULL(CompanyName, ''), ISNULL(BAddress, ''), ISNULL(BAddress2, ''), ISNULL(BCity, ''), ISNULL(BState, ''), ISNULL(BZip, '') FROM MailingExportView WHERE AdvanceMailing = 0 ORDER BY BZip, LastName
没有告诉我们你尝试了什么不幸的是你的问题是什么 也就是说,有两种标准方法可以将select上的null值转换为默认值
ISNULL
和合并
CASE
也是一个选项,而且它超出了顶部,但我还是包括了它
SELECT DISTINCT
Title,
FirstName,
COALESCE(MiddleInitial, '') MiddleInitial,
LastName,
ISNULL(Suffix,'') Suffix,
CompanyName,
CASE WHEN BAddress IS NULL THEN '' ELSE BAddress END BAddress,
没有告诉我们你尝试了什么不幸的是你的问题是什么 也就是说,有两种标准方法可以将select上的null值转换为默认值
ISNULL
和合并
CASE
也是一个选项,而且它超出了顶部,但我还是包括了它
SELECT DISTINCT
Title,
FirstName,
COALESCE(MiddleInitial, '') MiddleInitial,
LastName,
ISNULL(Suffix,'') Suffix,
CompanyName,
CASE WHEN BAddress IS NULL THEN '' ELSE BAddress END BAddress,
4 COALESCE vs.2为空,请选择。唯一的区别是:(1)coalesce将接受任意数量的参数,并返回列表中第一个不为null的参数;(2)isnull更易于键入。4 coalesce与2 isnull,因此请选择。唯一的区别是:(1)coalesce将接受任意数量的参数并返回列表中第一个不为null的参数,(2)isnull更易于键入。