Проблема с использованием регулярного выражения в SQL - PullRequest
1 голос
/ 17 января 2011

У меня есть столбец с именем «data-description», в котором есть записи типа

Mumbai,Maharastra,India
London,London, Britain
Chandigarh,Haryana,India
Lahore, Punjab, Non-India

Каждая строка описывает значение одного столбца описания данных.

Теперь мне нужно обновитьдругая таблица, которая будет иметь три столбца, будет иметь

<City> => <Citycode>   ---> Every City 
<Statename> => <Statename>
<Country>  => <Country>

У меня есть таблица, в которой выполняется сопоставление между городом и кодом города.Теперь мне нужно создать еще одну таблицу с тремя столбцами Citycode, Statename, Country

Как мне сделать это с помощью пары операторов SQl и без использования PL / SQL?

Такжепорядок не может быть одинаковым в строках.Как и в некоторых рядах есть порядок города, штата, округа.Другие могут иметь заказ State, Country, City.

1 Ответ

3 голосов
/ 17 января 2011

вы можете использовать REGEXP_SUBSTR для извлечения информации из исходного столбца:

SQL>  WITH my_data AS (
  2      SELECT 'Mumbai,Maharastra,India' d FROM dual
  3      UNION ALL SELECT 'London,London, Britain' d FROM dual
  4      UNION ALL SELECT 'Chandigarh,Haryana,India' d FROM dual
  5      UNION ALL SELECT 'Lahore, Punjab, Non-India' d FROM dual
  6   )
  7   SELECT regexp_substr(d, '[^, ]+', 1, 1) City,
  8          regexp_substr(d, '[^, ]+', 1, 2) Statename,
  9          regexp_substr(d, '[^, ]+', 1, 3) Country
 10     FROM my_data;

CITY                      STATENAME                 COUNTRY
------------------------- ------------------------- -------------------------
Mumbai                    Maharastra                India
London                    London                    Britain
Chandigarh                Haryana                   India
Lahore                    Punjab                    Non-India
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...