我有一个数据类型为varchar
的列。我想用NULL
替换所有非数字值。检查列值是否为Numeric。 SSIS
因此,例如我的专栏可以包含值MIGB_MGW
,但也1352
。我与Derived Column Transformation Editor
使用当前的表达式为:
(DT_I4)kbup == (DT_I4)kbup ? 1 : 0
但当然这个替换所有我想保持与1
值。我会用什么表达来保持数值? (1352
在这个例子中)
我有一个数据类型为varchar
的列。我想用NULL
替换所有非数字值。检查列值是否为Numeric。 SSIS
因此,例如我的专栏可以包含值MIGB_MGW
,但也1352
。我与Derived Column Transformation Editor
使用当前的表达式为:
(DT_I4)kbup == (DT_I4)kbup ? 1 : 0
但当然这个替换所有我想保持与1
值。我会用什么表达来保持数值? (1352
在这个例子中)
如果你想null
varchar
的类型,你可以使用NULL(DT_STR)
。对于DT_I4
可以使用NULL(DT_I4)
等
然后,您可以在场所使用(DT_I4)kbup
您0
的恢复要保持原有的varchar
值,转换为DT_I4
:
(DT_I4)kbup == (DT_I4)kbup ? (DT_I4)kbup : NULL(DT_I4)
使用NOT LIKE
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
另一种选择,如果2012+是Try_Convert()
SELECT Try_Convert(float,col)
FROM (VALUES ('MIGB_MGW'),
('2.6e7'),
('2.6BMW'),
('1352')) tc(col)
返回
NULL
26000000
NULL
1352
'case when whennumeric(dt_i4)then dt_I4 else null end' – xQbert