【问题标题】:如何从 Teradata SQL 的一列中的值中获取一些值?
【发布时间】:2022-01-23 16:49:37
【问题描述】:

我在 Teradata SQL 中有如下表:

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 中做到这一点?

【问题讨论】:

    标签: sql teradata teradata-sql-assistant


    【解决方案1】:

    使用STRTOK

    SELECT col1
    , STRTOK(col1,'|',2) AS col2
    FROM YourTable
    

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-26
        • 2019-04-01
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多