如何从 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
我在 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)。