0

すべてが 1 つの列にあるアドレスから州を抽出しようとしています。例を次に示します。

2901 MAIN ST,CORNING,NY,14830

substrとをinstr一緒に使用する方法を理解しようとしていますが、 のコツがつかめませんinstr。これが私がこれまでに持っているものです:

select substr('hello,hello,NY,11725-1234',1,instr('hello,hello,NY,11725-1234',',',2,3))
from dual;

2 番目のコンマで始まり、3 番目で終わり、その間にすべてが収まると思っていましたが、そうではないようです。

どんな助けでも大歓迎です。

4

2 に答える 2

4

正規表現は、この種のことを行うための優れた方法です。SUBSTR と INSTR も使用できますが、INSTR の 4 番目のパラメーターを利用することで、次のようになりますnth_appearance

select INSTR(mystring,',',1,1) AS first_comma
      ,INSTR(mystring,',',1,2) AS second_comma
      ,SUBSTR(mystring
             ,INSTR(mystring,',',1,1) + 1
             ,INSTR(mystring,',',1,2)
              - INSTR(mystring,',',1,1)
              - 1)
       AS middle_bit
FROM
(select 'hello,world,NY,11725-1234' as mystring from dual);

FIRST_COMMA  SECOND_COMMA  MIDDLE_BIT
===========  ============  ==========
          6            12  world
于 2013-07-23T01:15:04.153 に答える