【问题标题】:Using Substring and INSTR in Oracle在 Oracle 中使用子字符串和 INSTR
【发布时间】:2012-02-14 18:14:41
【问题描述】:

我无法创建此 Select 查询:

当我查询时:

SELECT DISTINCT PRODUCT_ID FROM SYSADM.TABLE; 

我得到的输出为:

EMA12345

EMA4567844

EMA4545455

US12342

NA4545454

PRS767657

现在我要获取数据,比如检索到的产品id是:

12345

4567844

4545455

US12342

NA4545454

PRS767657

这意味着除了以 EMA 开头的每个产品 ID 都应该按原样出现,而以 EMA 开头的产品 ID 应该没有 EMA。

需要将此附加到另一个选择查询中。不能使用程序。

【问题讨论】:

    标签: oracle select substring


    【解决方案1】:

    使用REPLACE函数:

    SELECT DISTINCT REPLACE(PRODUCT_ID, 'EMA') FROM SYSADM.TABLE
    

    【讨论】:

      【解决方案2】:
      SELECT DECODE( INSTR( product_id, 'EMA' ), 1, SUBSTR( product_id, 4 ), 
                     product_id ) AS my_column
        FROM SYSADM.TABLE
      

      基本上,如果 product_id 的前三个字符是“EMA”,则使用第 4 个字符到 product_id 的末尾,否则,使用整个 product_id。

      【讨论】:

        【解决方案3】:

        您可以将替换语句链接在一起,例如:

        select replace( replace( replace( product_id, 'EMA' ), 'US' ), 'NA' ) from sysadm.table;
        

        或遵循here 的备选方案之一。

        【讨论】:

        • 抱歉,误读了。以为你想删除所有前缀。
        猜你喜欢
        • 2014-07-22
        • 1970-01-01
        • 2011-01-02
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 1970-01-01
        • 2016-09-11
        相关资源
        最近更新 更多