SQL Server CONVERT(NUMERIC(18,0),'')失败,但CONVERT(INT,'')成功了吗?

Zac*_*ott 5 sql sql-server numeric-conversion

PRINT CONVERT(NUMERIC(18,0), '')

产生 Error converting data type varchar to numeric.

然而,

PRINT CONVERT(INT, '')

产生 0没有错误......

问题:是否有一些SQL Server标志或我是否需要为每个varchar到数字转换执行case语句?(除了明显的原因?)

Sql*_*CID 8

使用ISNUMERIC

declare @a varchar(20)
set @a = 'notanumber'
select case when isnumeric(@a) = 0 then 0 else convert(numeric(18,0),@a) end
Run Code Online (Sandbox Code Playgroud)