首页 > 解决方案 > 由于数据类型导致的插入问题

问题描述

我正在尝试运行这个:

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。谢谢。

标签: sqlsql-server

解决方案


使用TRY_CONVERT()

TRY_CONVERT(DECIMAL, [Col2])

如果您想0在失败时添加COALESCE()

COALESCE(TRY_CONVERT(DECIMAL, [Col2]), 0)

推荐阅读