我有一个基本的SQL问题
此代码中IsNull()= 0的含义是什么? 据我所知,=赋值,但在这种情况下,它在Where语句中使用。 希望有人可以向我解释:)
Where vol.espe_codigo = matriz.espe_codigo
And IsNull(costo_gerencias.plde_codigo,0) = 0
答案 0 :(得分:2)
这意味着如果costo_gerencias.plde_codigo
为null,它将返回0
或者ISNULL
函数的第二个参数。在这种情况下,WHERE
子句基本上是"其中vol.espe_codigo
等于matriz.espe_codigo
而costo_gerencias.plde_codigo
为空或等于零。&#34; < / p>
答案 1 :(得分:2)
isnull(firstvalue,secondvalue)测试firstvalue的值是否为NULL。当值不为null时返回此值,但是当值为null时返回值为secondvalue。
示例:
declare @test varchar(100) = 'abc'
declare @test2 varchar(100) = '123'
isnull(@test, @test2) will return 'abc'
第二个例子:
declare @test varchar(100) = null
declare @test2 varchar(100) = '123'
isnull(@test, @test2) will return '123'
第三个例子:
declare @test varchar(100) = ''
declare @test2 varchar(100) = '123'
isnull(@test, @test2) will return ''
我最常用它来检查varchar列,因为它们可能包含一个与NULL不同的空字符串,但是在DataGridView或TextBox中你看不到差异。
答案 2 :(得分:2)
IsNull()
是一个函数,它接受任意类型的两个输入值;但是第二个必须可以隐式转换为第一个参数的类型。 (见链接)
数据库引擎评估第一个参数,如果它为null,则系统返回第二个参数。如果第一个参数不为null,则返回第一个参数的值。
因此,在您的情况下,如果plde_codigo为null,则引擎将返回值0。如果不为null,则返回传入的plde_codigo的值。
这反过来意味着您的结果集将只包含plde_Codigo中具有NULL或0值的记录;除了其他限制标准外。
它也可以写成:
(costo_gerencias.plde_codigo is NULL OR costo_gerencias.plde_codigo = 0)
或更多数据库不可知:
coalesce(costo_gerencias.plde_codigo,0)=0
但在这种情况下,plde_codigo必须是数字;而使用isNull()