查询中的IF或CASE(SQL Server 2008)

时间:2013-05-21 20:24:32

标签: sql-server sql-server-2008

我有一个View Table,我有一个像这样写的查询

SELECT landNo, planNo, blockNo, parcelNo, RTRIM(LTRIM(STR(parcelNo))) AS parcelNoString,
    parcelAREA, '[ ' + blockNo + ' ]' + '  - ' + RTRIM(LTRIM(STR(parcelNo))) + '  - ' +
    RTRIM(LTRIM(STR(parcelAREA))) AS DisplayName
FROM PARCELS

所以显示名称显示为[blockNo] - parcelNo - parcelArea

现在我必须检查一下,如果blockNo IS NULL然后DisplayName必须是

[] - parcelNo - parcelArea

有人可以帮助这方面。

2 个答案:

答案 0 :(得分:2)

尝试

'[' + COALESCE(blockNo, '') + ']'

coalesce返回第一个非null参数,因此如果blockNo为null,它将返回一个空字符串('')。

答案 1 :(得分:0)

如果blockNo是一个字符串,则为plain;

'[' + ISNULL(blockNo, '') + ']'

如果blockNo是数字类型,首先将其强制转换为字符串,否则它将返回[0];

'[' + ISNULL(CAST(blockNo AS NVARCHAR), '') + ']'