【问题标题】:ORACLE/SYBASE SQL ClarificationORACLE/SYBASE SQL 说明
【发布时间】:2013-01-05 01:54:31
【问题描述】:

数据长度在特定字段中是随机的,如下所示:

我只想选择特殊字符之前的字符。

样品:

123456_3
454656484784_13
15051514745_7

预期结果如下:

123456
454656484784
15051514745

【问题讨论】:

    标签: sql oracle sybase


    【解决方案1】:

    一般示例:

    substring(your_data, 0, instr(your_data, '_'))

    【讨论】:

      【解决方案2】:

      快速而肮脏 - 您可以像 Oracle/Sybase 过程或类似的那样一步一步地弄清楚如何做到这一点......

      -- Ignore 0 or negative numbers --
      -- This gives you your end pos for substr --
      SELECT distinct(Instr('123456_3 454656484784_13 15051514745_7', '_', LEVEL)-1) substr_end_pos
        FROM dual
        CONNECT BY LEVEL < length('123456_3 454656484784_13 15051514745_7') 
        /
      
       -- This is start pos for substr --
       SELECT Distinct(Instr('123456_3 454656484784_13 15051514745_7', ' ', LEVEL)+1)  substr_start_pos
         FROM dual
         CONNECT BY LEVEL < length('123456_3 454656484784_13 15051514745_7')
        /
      
       -- These are substr start/end numbers returned by above queries --
       Select Substr('123456_3 454656484784_13 15051514745_7',  1, 6) From dual -- substr_start_pos=1, substr_end_pos=6
       /
      
       Select Substr('123456_3 454656484784_13 15051514745_7',  10, 21-9) From dual -- substr_start_pos=10, substr_end_pos=21-substr_start_pos-1
       /
      
       Select Substr('123456_3 454656484784_13 15051514745_7',  26, 36-25) From dual -- substr_start_pos=26 substr_end_pos=36-substr_start_pos-1
      /
      

      【讨论】:

        【解决方案3】:

        获得第一部分

        select substr(your_column, 1, INSTR(your_column, '_') - 1) 
        from your_table
        

        获取最后一部分

        select substr(your_column, INSTR(your_column, '_') + 1) 
        from your_table
        

        SQLFiddle demo

        【讨论】:

        • @uergen d:这个帮助了我。但是我如何修改它以检索 _ 符号之后的字符,例如:12123454_aa -> aa 在这种情况下 1545454_a -> 在这种情况下只有 a
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-02
        • 1970-01-01
        • 2012-09-04
        • 2019-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多