Teradata SQL:如何提取账户ID中字母R后的数字部分?
Teradata提取账户ID中字母"R"后的纯数字部分
针对你提到的账户ID格式(如2733R9087813964),可以用以下两种常用方法提取"R"之后的数字:
方法一:使用SUBSTRING + POSITION函数
利用POSITION定位"R"的位置,再通过SUBSTRING截取后续内容:
SELECT SUBSTRING(account_id FROM POSITION('R' IN account_id) + 1) AS post_r_digits FROM your_table;
POSITION('R' IN account_id)返回"R"在字符串中的起始索引- 加1后从"R"的下一个字符开始截取,直到字符串末尾
方法二:使用正则表达式函数REGEXP_SUBSTR
通过正则匹配"R"后的数字序列,直接提取目标内容:
SELECT REGEXP_SUBSTR(account_id, 'R(\\d+)', 1, 1, 'e') AS post_r_digits FROM your_table;
- 正则
R(\\d+)匹配"R"后跟任意长度的数字,括号内的\\d+是要提取的捕获组 - 参数
'e'指定返回捕获组的内容,而非整个匹配的字符串
特殊情况处理(若存在多个"R")
如果账户ID中可能出现多个"R",需要提取**最后一个"R"**后的数字,可调整正则表达式:
SELECT REGEXP_SUBSTR(account_id, '.*R(\\d+)', 1, 1, 'e') AS post_r_digits FROM your_table;
.*R会匹配到最后一个"R",确保后续捕获的是最后一组数字
内容的提问来源于stack exchange,提问作者DenairPete
相关产品推荐
相关产品推荐

