[英]REGEXP_SUBSTR converted output is not casting as integer
我嘗試使用如下所示的 REGEXP_SUBSTR Sql 函數從 20 個字符的字符串中提取所有數字。
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/decimal 或任何數字數據類型時,它會因Invalid input syntax for type numeric
或Invalid digit, Value '2', Pos 0, Type: Long
而失敗。
我錯過了什么嗎? REGEXP_SUBSTR 連接的典型輸出是 105622,0044,022 等。查詢在 Redshift 數據倉庫上運行,並且 REGEXP_REPLACE/TRANSLATE 尚未出現在那里。
看起來只要字符串中沒有數字,那么上面的 regexp_substr 連接就會返回空字符串 (''),它不支持轉換為整數。 所以我使用了NULLIF (regex expression, '')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.