Получить данные из строки между двойными кавычками в Oracle - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть строка с двойными кавычками внутри.

EG:

<cosmtio :ff "intermit"ksks>

Мне нужны данные между ""

Я пробовал regexp_substr но все еще не может получить значение между двойными кавычками.

Ответы [ 4 ]

3 голосов
/ 25 сентября 2019

Мы могли бы попытаться использовать REGEXP_REPLACE здесь:

SELECT
    string,
    REGEXP_REPLACE(string, '.*"([^"]+)".*', '\1') AS quoted_term
FROM yourTable;

enter image description here

Данные:

WITH yourTable AS (
    SELECT '<cosmtio :ff "intermit"ksks>' AS string FROM dual
)

Демонстрация

Другой вариант, использующий REGEXP_SUBSTR:

SELECT
    string,
    TRIM(BOTH '"' FROM REGEXP_SUBSTR(string, '".*"'))
FROM yourTable;

Но этот подход требует вложения двух вызовов функций, что означаетон может не превзойти REGEXP_REPLACE версию.

1 голос
/ 25 сентября 2019

Вам необходимо использовать REGEXP_SUBSTR:

SELECT REGEXP_SUBSTR('<cosmtio :ff "intermit"ksks>', '"([^"]+)"', 1, 1, NULL, 1) AS Result FROM DUAL

enter image description here

См. онлайн-демонстрацию .

Регулярное выражение простое: "([^"]+)" соответствует ", затем захватывает любые 1+ символов, отличных от ", в группу 1, а затем соответствует ".Последний аргумент 1 говорит Oracle REGEXP_SUBSTR вернуть значения группы 1.Первый (position) и второй (occurrence) аргументы являются значениями по умолчанию, 1.NULL означает, что никакие конкретные опции не нужно передавать в механизм регулярных выражений.

1 голос
/ 25 сентября 2019

Возможно с regexp_substr следующим образом:

Select 
  regexp_substr('<cosmtio :ff "intermit"ksks>', '[^"]+', 1, 2) 
from dual;

Приветствия !!

1 голос
/ 25 сентября 2019

Вы можете попробовать следующее:

SELECT REGEXP_REPLACE('<cosmtio :ff "intermit"ksks>', '^[^"]*("([^"]*)")?.*', '\2') FROM dual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...