2

我有一个 sql 语句,它将两列 ItemNumber 和 Name 连接到一个变量中。我将此变量用作列表框的 DataTextField。一切似乎都很好。不过我确实发现了一个问题。某些行在 Name 字段中有一个空值,当它返回变量时,该变量为空。

所以我问是否有任何方法可以检查该空值,而是只将项目编号放在它的位置?

这是我的 SQL 语句

SELECT ProductID, Name, CustItemNum, CustItemNum + ' - ' + Name AS itemNumName
FROM Item it inner join JITVendors jit on it.Catalog_code = jit.Catalog_code 
WHERE jit.VendorName = 'Vendor' 
ORDER BY Name

如果有任何其他可能有用的代码,请告诉我,我将能够提供。谢谢

4

3 回答 3

6

您可以使用空字符串coalesce替换名称:null

CustItemNum + coalesce(' - ' + Name,'') AS itemNumName
于 2012-06-19T18:27:02.143 回答
3

正如评论中建议的@ashes999,您可以使用ISNULL

SELECT ProductID, Name, CustItemNum, ISNULL(CustItemNum,'') + ' - ' + ISNULL(Name,'') AS itemNumName
FROM Item it inner join JITVendors jit on it.Catalog_code = jit.Catalog_code 
WHERE jit.VendorName = 'Vendor' 
ORDER BY Name
于 2012-06-19T18:30:09.367 回答
2

另一个尚未提及的选项,如果您想在任何地方都这样做,而无需每次都手动合并空字符串:

SET CONCAT_NULL_YIELDS_NULL OFF

(默认开启)。启用时,将 NULL 连接到字符串会产生 NULL。关闭时,此服务器选项在将字符串连接在一起时将其视为空字符串(例如,在关闭时连接到 NULL 的任何字符串都将产生原始字符串)。

http://msdn.microsoft.com/en-us/library/ms176056.aspx

于 2012-06-19T18:31:25.017 回答