Как собрать данные слева от строки текста в Oracle SQL - PullRequest
0 голосов
/ 16 января 2019

У меня есть SQL, который используется для возврата всех данных о клиентах, однако он все в одном поле. Я использую SQL:

SELECT Cust_Desc
FROM All_Cust_Data

Cust_Desc возвращает следующую информацию в следующем формате

John, Doe, Client ID 7, Region Code, 4....

Мне нужно отделить данные, оставшиеся от всего, от ", Код региона", поэтому запрос возвращает только "Джон, Доу, Идентификатор клиента 7"

Спасибо заранее!

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Попробуйте использовать функции substr и instr

select Cust_Desc, substr(Cust_Desc,0,INSTR(Cust_Desc,'Region Code')-1) from All_Cust_Data;
0 голосов
/ 17 января 2019

Например:

SQL> with all_cust_data (cust_Desc) as
  2    (select 'John, Doe, Client ID 7, Region Code, 4....' from dual)
  3  select rtrim(trim(substr(cust_Desc, 1, instr(cust_desc, 'Region Code') - 1)), ',') result
  4  from all_cust_data;

RESULT
----------------------
John, Doe, Client ID 7

SQL>

Используется старая комбинация SUBSTR + INSTR; TRIM функции здесь, чтобы удалить завершающие пробелы и запятую (одна за номером 7,)

0 голосов
/ 16 января 2019

использование regexp_replace

with All_Cust_Data(Cust_Desc) as
(
 select 'John, Doe, Client ID 7, Region Code, 4....' from dual
)
select regexp_replace(Cust_Desc,'(.*),.\Region Code.*','\1') as "Result String"
  from All_Cust_Data;

    Result String
-----------------------
John, Doe, Client ID 7

Rextester Demo

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