选择查询,比较空记录

时间:2012-01-10 15:05:52

标签: sql-server select null

我正在编写一个sql server查询:

select * from vwApplicationList
            where status='Unassigned' AND
            BBL like '%' + @BBL + '%' AND
            UnitOrAppartmentNumber like '%'+@Appartment+'%' AND
            ResidenceTypeDescription like '%'+@ResidenceTypeDescription+'%' AND
            SN1 like '%'+@SN1+'%' AND
            SN2 like '%'+@SN2+'%'

问题是几个记录中的字段“SN2”为空。那我怎么比较呢?

3 个答案:

答案 0 :(得分:3)

你可以做到

COALESCE(SN2 ,'') like '%'+@SN2+'%'

COALESCE

答案 1 :(得分:2)

如果您想在比较中得到肯定的结果:

... AND COALESCE(SN2, @SN2) LIKE '%' + @SN2 + '%'

如果您想要否定结果(假设@SN2也不是空字符串):

... AND COALESCE(SN2, '') LIKE '%' + @SN2 + '%'

答案 2 :(得分:2)

NULL,只能与IS NOTIS NOT NULL进行比较。

如果您想要始终包含NULL,可以尝试

(SN2 like '%'+@SN2+'%' OR SN2 IS NULL)

如果您只想在@ SN2为空时包含NULL,请尝试类似

的内容
(SN2 like '%'+@SN2+'%' OR (@SN2 = '' AND SN2 IS NULL))