Получить символы от 8-го до числового значения: Oracle - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть следующая строка

"923449499950,49,3513,NewBasic5,Talkshawk,IDKR17,North-2,KARAK,"Village Warana Mir Hassan Khel ,Dist Karak Tehsil,459,N2-NKRK1201,.0000,.0000,.00,.00,.00,.00,0,.0000,.0000,.0000,.00,.00,.0000,.00,.00,Nokia,108,Basic-Voice Only,Proprietary OS,Nokia 108"

Я хочу извлечь строку между KARAK и, 459.

Я не могу взломать это, до сих пор я сделал следующее, используя "," в качестве разделителя

SELECT nth_string
FROM
  (SELECT TRIM (REGEXP_SUBSTR (long_string, '[^,]+', 1, ROWNUM) ) nth_string ,
    level AS lvl
  FROM
    (SELECT REPLACE('923449499950,49,3513,NewBasic5,Talkshawk,IDKR17,North-2,KARAK,"Village Warana Mir Hassan Khel ,Dist Karak Tehsil,459,N2-NKRK1201,.0000,.0000,.00,.00,.00,.00,0,.0000,.0000,.0000,.00,.00,.0000,.00,.00,Nokia,108,Basic-Voice Only,Proprietary OS,Nokia 108',
    ',,',', ,') long_string
    FROM DUAL
    )
    CONNECT BY LEVEL <= REGEXP_COUNT ( long_string, '[^,]+')
  )WHERE lvl = 9;

Следовательно, полученная строка будет "Деревня Варана Мир Хасан Хель, Дист Карак Техсил"».Код, который я использовал, дает "Village Warana Mir Hassan Khel".

1 Ответ

0 голосов
/ 20 декабря 2018

Вот один из вариантов:

SQL> with test (col) as
  2    (select '"923449499950,49,3513,NewBasic5,Talkshawk,IDKR17,North-2,KARAK,"Village Warana Mir Hassan Khel ,Dist Kar
ak Tehsil,459,N2-NKRK1201,.0000,.0000,.00,.00,.00,.00,0,.0000,.0000,.0000,.00,.00,.0000,.00,.00,Nokia,108,Basic-Voice On
ly,Proprietary OS,Nokia 108"'
  3    from dual)
  4  select instr(col, ',', 1, 8) + 1 eig,            --> 8th comma position
  5         regexp_instr(col, '\d+', 1, 7) dig,       --> digit (459 in your example)
  6  --
  7  rtrim(ltrim(substr(col,
  8                     instr(col, ',', 1, 8) + 1 ,        --> starting position
  9                     regexp_instr(col, '\d+', 1, 7) - 1 - instr(col, ',', 1, 8) - 1 ),          --> length
 10        '"'), '"') result          --> remove double quotes (if any)
 11  from test;

       EIG        DIG RESULT
---------- ---------- -------------------------------------------------
        64        115 Village Warana Mir Hassan Khel ,Dist Karak Tehsil

Вам нужны строки 7 - 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...