我有一个名为“data-description”的列,其中包含
等条目Mumbai,Maharastra,India
London,London, Britain
Chandigarh,Haryana,India
Lahore, Punjab, Non-India
每行描述一个数据描述列的值。
现在我需要更新另一个包含三列
的表<City> => <Citycode> ---> Every City
<Statename> => <Statename>
<Country> => <Country>
我有一张表,其中包含City和City-Code之间的映射。现在我需要使用三个columsn Citycode,Statename,Country
创建另一个表如何使用几个SQl语句并且不使用任何PL / SQL?
此外,行中的顺序可能不同。像一些行有订单城市,州,县。其他人可能有订单州,国家,城市。
答案 0 :(得分:3)
您可以使用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