连接的SQL列返回空值,是否有解决方法?

时间:2012-06-19 18:25:24

标签: c# asp.net sql listbox

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

所以我问是否有办法检查该空值,而只是将项目编号放在其位置?

这是我的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

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

3 个答案:

答案 0 :(得分:6)

您可以使用coalescenull名称替换为空字符串:

CustItemNum + coalesce(' - ' + Name,'') AS itemNumName

答案 1 :(得分: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

答案 2 :(得分:2)

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

SET CONCAT_NULL_YIELDS_NULL OFF

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

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