我有一個數據類型爲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