如何从 Teradata SQL 中的一列中的值中获取一些值?

How to take some value from value in one column in Teradata SQL?

我在 Teradata SQL 中有 table,如下所示:

col1
---------
O|1234|5RFTGS|022
O|5526|AAGHT7|022
O|1789|IIT63F|022

第一个值始终是:“O|”然后有4个数字等等...... 我只需要使用这 4 个数字代码创建新列,因此我需要如下内容:

col1              | col2
---------------------------
O|1234|5RFTGS|022 | 1234
O|5526|AAGHT7|022 | 5526
O|1789|IIT63F|022 | 1789

我如何在 Teradata 中做到这一点 SQL?

您的示例数据显示固定长度:

Substring(col1 From 1 FOR 13),
Substring(col1 From 15)

但它可能是可变的,然后可以使用 INSTR 找到第 3 个 '|':

Substring(col1 From 1 FOR Instr(col1, '|', 1, 3)-1),
Substring(col1 From Instr(col1, '|', 1, 3)+1)

如果可能少于3 |您需要使用 CASE 添加完整性检查(或切换到 REGEXP_SUBSTR)。

È=12=stuse STRTOKSh=11=sh w=10=sh