Извлечь подстроку из поля PLSQL - PullRequest
0 голосов
/ 25 марта 2020

Я просто начинаю с PL/SQL, и мне нужно извлечь определенную информацию из поля, где я сохранил весь текст XML, содержащий примерно 4000 символов, если не больше, обращаясь к соответствующей документации. Я вижу, что для чего вы мне нужны Я могу использовать функцию SUBSTR или функцию I REGEXP_SUBSTR, не знаю, какой из них можно использовать в моем случае.

Из всего текста, который я сохранил в поле, мне нужно извлечь точно один конкретный c данных, следующее является лишь частью текста, который у меня есть в поле.

fechaAutenticacion="2019-10-17T17:14:23"

Из этой части текста мне нужно извлечь то, что он содержит fechaAutenticacion, я обозначьте эту часть 2019-10-17T17:14:23 без кавычек, а затем отобразите ее в новом столбце.

Ниже приведен запрос к таблице и поле, в котором у меня есть весь текст, содержащий более 4000 символов.

SELECT SPRCMNT_TEXT_NAR
        FROM SPRCMNT

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Предполагая, что шаблон ''fechaAutenticacion="<DATE>"' последовательно указывает часть, которую вы хотите перехватить, вы можете использовать regexp_substr(), например, так:

select regexp_substr(sprcmnt_text_nar, 'fechaAutenticacion="([^"]+)"', 1, 1, null, 1) authentication_date
from sprcmnt

Скобки определяют группу захвата в соответствующей части строки ; затем последний аргумент говорит Oracle вернуть первую (единственную) захваченную группу, а не все совпадения.

0 голосов
/ 25 марта 2020

Я хотел бы использовать regexp_replace():

select regexp_replace(sprcmnt_text_nar, '^.*fechaAutenticacion="([^"])".*$', '\1') 
...