sql - 由于数据类型导致的插入问题
问题描述
我正在尝试运行这个:
INSERT INTO (Col1, Col2, Col3, etc. )
SELECT Col1, Col2, Col3, etc.
FROM MYTABLE
问题是,我在几个字段中有一些 NA 和 NULLS。我克服了 INT 数据类型的问题。
CONVERT(INT, CASE WHEN IsNumeric([Col1]) = 1 THEN [Col1] ELSE 0 END)
我认为下面的行适用于小数,但事实并非如此。
CONVERT(DECIMAL, CASE WHEN IsNumeric([Col2]) = 1 THEN [Col2] ELSE 0 END)
有没有办法解决这个问题?再一次,我认为是 NA 和 NULLS 把事情扔掉了。我正在使用 SQL Server 2018。谢谢。
解决方案
使用TRY_CONVERT()
!
TRY_CONVERT(DECIMAL, [Col2])
如果您想0
在失败时添加COALESCE()
:
COALESCE(TRY_CONVERT(DECIMAL, [Col2]), 0)