我在SQL 2012上有一个视图,我试图连接2个nvarchar列。如果其中一个值为null,则返回null。
我试过了concat函数,我试过{ "data": null, "service": null, "status": { "code": 1, "description": "An error occurs while processing your request, Please try later or contact our sales department", "status": "success" } }
我曾尝试使用isnull(列名)但仍然返回空值
这是我的问题:
SET CONCAT_NULL_YIELDS_NULL OFF
任何建议都将不胜感激。
答案 0 :(得分:1)
使用CONCAT
CONCAT[Document Number],[Dunning Block])
CONCAT忽略空值
CONCAT采用可变数量的字符串参数并将它们连接成一个字符串。它至少需要两个输入值;否则,会引发错误。所有参数都隐式转换为字符串类型,然后连接。空值隐式转换为空strin
答案 1 :(得分:0)
SET CONCAT_NULL_YIELDS_NULL OFF
只能用于连接值和NULL-如果所有值都为NULL,您仍然会得到NULL。我怀疑两列都有NULL值,尽管你的问题标题 - 如果你刚刚检查了数据,你的任何方法都可能有用。
ISNULL
应该适合您的情况,但请确保您在可以为空的两个列上执行此操作:
SELECT TOP (100) PERCENT Assignment,
ISNULL([Document Number],'') + ISNULL([Dunning Block], '') AS [Document Number],
[Document Type],
[Document Date],
[Special G/L Indicator],
[Amount in local currency],
[Local Currency],
[Clearing Document],
Text,
Account,
Reference,
[Dunning block],
[Invoice reference],
SUBSTRING(strDoc_Date, 1, 4) AS Year,
CASE
WHEN SUBSTRING(strDoc_Date, 1, 4) = '2013' THEN
CASE
WHEN SUBSTRING(strDoc_Date, 6, 2) = '01' THEN
CASE
WHEN CAST(SUBSTRING(strDoc_Date, 9, 2) AS INTEGER) > 25 THEN '02'
ELSE SUBSTRING(strDoc_Date, 6, 2)
END
ELSE SUBSTRING(strDoc_Date, 6, 2)
END
ELSE SUBSTRING(strDoc_Date, 6, 2)
END AS Period,
SUBSTRING(strDoc_Date, 9, 2) AS Day
FROM dbo.Zcustage
另外,在这里使用TOP 100 PERCENT是一个无操作 - 它什么都不做。
答案 2 :(得分:0)
你需要ISNULL
ISNULL(YourNullableField,'')