Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果为null,则将varchar强制转换为numeric_Sql_Casting_Int_Varchar - Fatal编程技术网

Sql 如果为null,则将varchar强制转换为numeric

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

如果值为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 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-Sorry
0
将正常工作。请参阅我的编辑。无论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