繁体   English   中英

Teradata 15:从STRING中提取数字并将其放入DECIMAL

[英]Teradata 15: extracting number from STRING and putting it into DECIMAL

我需要提取这样的小节:

QQ_34_5
HHR_43_9
ET_7_25

转换为DECIMAL编号,得到以下内容:

34,50
43,90
7,25

正确的功能是什么?

谢谢

使用REGEXP_SUBSTRTO_NUMBER另一种方式:

 To_Number(RegExp_Substr(col, '([0-9])+_([0-9])+$'), '9999D99', 'NLS_NUMERIC_CHARACTERS = ''_.''')

使用REGEXP_REPLACE

SELECT
    REGEXP_REPLACE(col, '[A-Za-z0-9]+_([0-9])+_([0-9])+$', '\1,\2', 1, 0) AS output
FROM yourTable;

如果您确实需要善意的小数,则可以转换上面的输出,例如

SELECT
    CAST(REGEXP_REPLACE(col, '[A-Za-z0-9]+_([0-9])+_([0-9])+$', '\1.\2', 1, 0)
         AS DECIMAL(10,2)) AS output
FROM yourTable;

您可以通过多种方式进行操作。

1)使用子串和instring。

2)Strtok功能

strtok(colname, '_', 2)||','||strtok(colname, '_', 3)||'0'

3)正则表达式功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM