Sql 如果为null,则将varchar强制转换为numeric
如果值为null,如何处理此转换,以便不会出现错误“将数据类型varchar转换为数值时出错”Sql 如果为null,则将varchar强制转换为numeric,sql,casting,int,varchar,Sql,Casting,Int,Varchar,如果值为null,如何处理此转换,以便不会出现错误“将数据类型varchar转换为数值时出错” Thanx您可以使用ISNULL: convert(numeric(19,2), ISNULL(mdmaster.check_no, 0))as checkNbr, 这将使任何NULL值转换为0.00 您可以使用ISNUMERIC,如果为空,它将返回0.00 DECLARE @t VARCHAR(50); SELECT convert(numeric(19,2), ISNUMERIC (@t))as
Thanx您可以使用
ISNULL
:
convert(numeric(19,2), ISNULL(mdmaster.check_no, 0))as checkNbr,
这将使任何NULL
值转换为0.00
您可以使用ISNUMERIC,如果为空,它将返回0.00
DECLARE @t VARCHAR(50);
SELECT convert(numeric(19,2), ISNUMERIC (@t))as checkNbr
或者,如果符合您在ms sql server中的要求,您也可以使用如下所示的方法
SELECT
CASE
WHEN Field NOT LIKE '%[^0-9]%'
THEN CAST(Field AS INT)
ELSE NULL
END
这怎么正确?如果
mdmaster.check\u no
为空,则本质上是convert(numeric(19,2),“”)
,它仍将返回“将数据类型varchar转换为numeric时出错”。@LittleBobbyTables-Sorry0
将正常工作。请参阅我的编辑。无论RDBMS如何,ISNUMERIC不是只接受一个参数吗?我知道,但是您有ISNUMERIC(mdmaster.check_no.)。您提供的引用只显示了一个参数,但您使用了两个。@Littlebobby,您是对的。。我只是复制粘贴了查询的一部分&没有更改其余部分。。您可以使用它,如Microsoft Reference中所示。在第一个示例中,“当输入表达式的计算结果为有效的数字数据类型时,ISNUMERIC返回1。”如果@t为数字,则checkNbr为1.00,否则为0.00。我认为这也不管用。
SELECT
CASE
WHEN Field NOT LIKE '%[^0-9]%'
THEN CAST(Field AS INT)
ELSE NULL
END