SQL 服务器中具有多个整数值的 ISNULL
ISNULL with multiple Integer values in SQL Server
我的要求是将带有一些整数的输入参数传递到数据库中以获取数据。但是在前端,我正在检查我们是否没有 select 任何输入数据(应用程序的报告类型),NULL 应该传递其他所有数据或 selected 数据应该传递。
WHERE
a.DateTime BETWEEN '2018-04-12 00:00:00' AND '2018-04-12 23:59:59'
AND ISNULL('0000441183344450,0000447769267501,0000447789917187',CallNumber) = CallNUmber
AND ISNULL(CAST('1,2,3' AS INT), ID) = ID
在上面的查询中 ISNULL(CAST('1,2,3' AS INT), ID) = ID
导致错误:
Conversion failed when converting the varchar value '1,2,3' to data type int
我知道这是非常普遍的错误,但我的要求是传递 selected 整数值或所有值,如果用户没有 select 输入中的任何值。
在数据库中,ID
有一个 int
数据类型,如果与引号值(和 ISNULL('121','122',AgentSkillTargetID)=AgentSkillTargetID
)一起使用,我会得到一个错误
The isnull function requires 2 argument(s)
在同一个查询中
ISNULL('0000441183344450,0000447769267501,0000447789917187',CallNumber) = CallNUmber
有效,因为 CallNumber
的数据类型是 varchar
。
isnull
function is a t-sql function that can only accept two parameters. For returning the first non-null value from a larger list of parameters, use the ansi-complient coalesce
函数代替。有些人可能会声称您永远不应该使用 isnull
,因为它不符合 ansi。就个人而言,我认为这不是一个足够好的理由。我认为您应该使用可用的最佳工具。
有关详细信息,请阅读 coalesce
文档页面的 Comparing COALESCE
and ISNULL
部分。
我的要求是将带有一些整数的输入参数传递到数据库中以获取数据。但是在前端,我正在检查我们是否没有 select 任何输入数据(应用程序的报告类型),NULL 应该传递其他所有数据或 selected 数据应该传递。
WHERE
a.DateTime BETWEEN '2018-04-12 00:00:00' AND '2018-04-12 23:59:59'
AND ISNULL('0000441183344450,0000447769267501,0000447789917187',CallNumber) = CallNUmber
AND ISNULL(CAST('1,2,3' AS INT), ID) = ID
在上面的查询中 ISNULL(CAST('1,2,3' AS INT), ID) = ID
导致错误:
Conversion failed when converting the varchar value '1,2,3' to data type int
我知道这是非常普遍的错误,但我的要求是传递 selected 整数值或所有值,如果用户没有 select 输入中的任何值。
在数据库中,ID
有一个 int
数据类型,如果与引号值(和 ISNULL('121','122',AgentSkillTargetID)=AgentSkillTargetID
)一起使用,我会得到一个错误
The isnull function requires 2 argument(s)
在同一个查询中
ISNULL('0000441183344450,0000447769267501,0000447789917187',CallNumber) = CallNUmber
有效,因为 CallNumber
的数据类型是 varchar
。
isnull
function is a t-sql function that can only accept two parameters. For returning the first non-null value from a larger list of parameters, use the ansi-complient coalesce
函数代替。有些人可能会声称您永远不应该使用 isnull
,因为它不符合 ansi。就个人而言,我认为这不是一个足够好的理由。我认为您应该使用可用的最佳工具。
有关详细信息,请阅读 coalesce
文档页面的 Comparing COALESCE
and ISNULL
部分。