2014-03-27 87 views
2

我嘗試使用下面的REGEXP_SUBSTRql函數提取20個字符的字符串中的所有數字。REGEXP_SUBSTR轉換後的輸出不是以整數形式輸出

select 
REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 1) 
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 2) 
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 3) 
... 
... 
|| REGEXP_SUBSTR(substring(mycolumn,1,20), '^[0-9]', 20) 
from tbl; 

但是,試圖將它轉換爲BIGINT /小數或任何數字數據類型,它與Invalid input syntax for type numericInvalid digit, Value '2', Pos 0, Type: Long 等故障時。

我錯過了一些東西嗎? REGEXP_SUBSTR級聯的典型輸出是105622,0044,022等。查詢在Redshift數據倉庫上運行,並且REGEXP_REPLACE/TRANSLATE尚未存在。

回答

2

看起來像字符串中沒有數字時,上面的regexp_substr連接就返回空字符串(''),這個字符串不被轉換爲整數。所以我用了NULLIF (regex expression, '')