Я хочу использовать подстроку и получить значения в соответствии с моим шаблоном - PullRequest
1 голос
/ 08 декабря 2010
select substr(e.orgmessage, 40, 50) as one,
       orgmessage as original_message
  from table

Результат в первом столбце:

00 02182 00363 00008 O    PKR      500 01983 00319

, но исходная строка:

09:22:12 CASH COUNTERS(C)    PKR     1000 02182 00363 00008 O    PKR      500 01983 00319 00315 O    ***        0 00000 00000 00000 N    ***        0 00000 00000 00000 N

Я не могу получить подстроку, чтобы вернуть то, что я хочу.Мне нужны такие значения, как 500 и 1000. Тип данных поля: VARCHAR2(1000 Byte).

Ответы [ 2 ]

0 голосов
/ 31 декабря 2010

Если ваша строка следует регулярному шаблону каждый раз, тогда вы сможете легко извлечь 2 значения. 500 и 1000 в вашей выборке идут после индикаторов PKR. Если строка правильная, то значения начинаются с символов 33 и 69 и начинаются с 9 символов каждый. Используя это, мы можем использовать:

select substr(txt, 33, 9) value1,
       substr(txt, 69, 9) value2
  from (select '09:22:12 CASH COUNTERS(C)    PKR     1000 02182 00363 00008 O    PKR      500 01983 00319 00315 O    ***        0 00000 00000 00000 N    ***        0 00000 00000 00000 N' txt
          from dual
       )

, который возвращает:

VALUE1    VALUE2
--------- ---------
     1000       500

1 row selected.

Если ваша строка не является регулярной, и вам нужно разбить строку на каждом PKR, а затем вытащить 9 символов после PKR, вам придется использовать более изящный SQL, чем просто подстроку.

0 голосов
/ 14 декабря 2010

Используйте INSTR, чтобы найти положение подстроки в исходной строке, затем используйте substr, чтобы разобрать ее из этой позиции.

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