Как вернуть строку в кавычках - PullRequest
2 голосов
/ 09 мая 2019

Я запрашиваю набор данных с помощью Oracle SQL Developer и хочу создать столбец с частичными возвращаемыми данными из (CLOB) в другом столбце.

Мне нужна часть в кавычках, и я использовалподстрока для извлечения, однако значение будет меняться, как и длина строки.Есть ли способ закончить, когда достигают закрывающих кавычек вместо указания длины строки?

dbms_lob.substr(a.LINETESTRESULT,15,dbms_lob.instr(UPPER(a.LINETESTRESULT),'LHCRAG')+11) AS REFRESH_RAG

В минуту возвращается 15 символов, но последние добавления короче и показывают ", из следующей записиМне нужно заменить атрибут длины.

Результат, который я получаю:

Red_Session ",

Мне нужен следующий вывод: Red_Session

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

Ответы [ 3 ]

2 голосов
/ 09 мая 2019

INSTR имеет параметр nth (номер события, начиная с 1.). С этим вы можете создать что-то вроде этого.

dbms_lob.substr(a.LINETESTRESULT,dbms_lob.instr(a.LINETESTRESULT, '"', 1, 2) - dbms_lob.instr(a.LINETESTRESULT, '"') - 1, dbms_lob.instr(a.LINETESTRESULT, '"') + 1) AS REFRESH_RAG
1 голос
/ 09 мая 2019

вы можете попробовать REGEXP_SUBSTR, как показано ниже. В качестве альтернативы вы можете найти положение цитаты и использовать подстроку ...

SELECT
  REGEXP_SUBSTR(a.LINETESTRESULT,
                '"([^"]*)') AS REFRESH_RAG
  FROM DUAL;
0 голосов
/ 09 мая 2019

Удалось получить это, используя следующий код:

SELECT
dbms_lob.substr(UPPER(a.LINETESTRESULT), dbms_lob.instr(UPPER(a.LINETESTRESULT), '"', 
dbms_lob.instr(UPPER(a.LINETESTRESULT), 'LHCRAG') + 11) - 
(dbms_lob.instr(UPPER(a.LINETESTRESULT), 'LHCRAG') + 11), 
dbms_lob.instr(UPPER(a.LINETESTRESULT), 'LHCRAG') + 11)
AS REFRESH_RAG
...