Sql 检查列值是否为数字。SSIS

Sql 检查列值是否为数字。SSIS,sql,sql-server,visual-studio,ssis,Sql,Sql Server,Visual Studio,Ssis,我有一个数据类型为varchar的列。我想用NULL替换所有非数值的值 例如,我的列可以包含MIGB_MGW的值,但也可以包含1352。我在派生列转换编辑器中使用的当前表达式是: 当然,这会用1替换我想要保留的所有值。我将使用什么表达式来保存数值?1352在本例中使用NOT LIKE 结果: 如果想要varchar类型的null,可以使用NULLDT_STR。对于DT_I4,可以使用NULLDT_I4等 然后可以使用DT_I4kbup代替1返回要保留的原始varchar值,并将其转换为DT_I4

我有一个数据类型为varchar的列。我想用NULL替换所有非数值的值

例如,我的列可以包含MIGB_MGW的值,但也可以包含1352。我在派生列转换编辑器中使用的当前表达式是:

当然,这会用1替换我想要保留的所有值。我将使用什么表达式来保存数值?1352在本例中

使用NOT LIKE

结果:

如果想要varchar类型的null,可以使用NULLDT_STR。对于DT_I4,可以使用NULLDT_I4等

然后可以使用DT_I4kbup代替1返回要保留的原始varchar值,并将其转换为DT_I4:


如果2012+是Try\u Convert,另一个选项是

返回

NULL
26000000
NULL
1352

您可以使用派生列转换它们,然后在错误输出中使用ignore failure选项。

当isnumericdt_i4然后是dt_i4 else null End时,不要忘记将错误输出设置为忽略故障?这个答案是32个月前的,完全正确。
SELECT CASE
         WHEN col NOT LIKE '%[^0-9]%' THEN col
         ELSE NULL
       END as Only_Numeric
FROM   (VALUES ('MIGB_MGW'),
               ('1352')) tc(col) 
Only_Numeric
------------
NULL
1352
(DT_I4)kbup == (DT_I4)kbup ? (DT_I4)kbup : NULL(DT_I4)
SELECT Try_Convert(float,col)
FROM   (VALUES ('MIGB_MGW'),
               ('2.6e7'),
               ('2.6BMW'),
               ('1352')) tc(col) 
NULL
26000000
NULL
1352