2017-03-10 11 views
1

私は、Countryという名前の列を含むMySQLデータベーステーブルを持っています。このテーブルに使用されているソースファイルに応じて、完全なCNT名、時にはISO 3またはISO 2 CNTコードが表示されることがあります。国名は常に大文字で書かれています(カナダ、ポーランドなど)。2桁のCNTコードまたは完全なCNT名を3桁のCNTコードに変換する方法

国名/国ISO 3コードをISO 2 CNTコード - (CA、PLなど)に変換できるクエリにいくつかの文を追加する必要があります。

私は簡単な解決策を使用してみました: select left (Country, 2) from tb_name

これは、すべての国のために有用ではありません。私が最初の2つの手紙を「ポーランド」から取った場合、私は「PL」の代わりに「PO」を得るでしょう。

本当にありがとうございます。 ありがとうございます。 これは私の最初の投稿です...私は、理解しやすいと思います。そうでない場合は、私に知らせて、改善します。 :)

ありがとう!

アデル

答えて

0

あなたが列内の一貫性のない名前を持っているように、私は以下のようなルックアップテーブルを持つ推薦は:

countries 
country_name | country_code 
POLAND  | PL 
POL   | PL 
CANADA  | CA 

country_nameは主キーすることができます(あなたがより多くの名前を追加することができます他の表に表示されているとおり)、country_codeはISOの国コードです。

この処理が完了したら、JOINをクエリに使用して、常にcounry_codeをこのテーブルから取得できます。

0

CuntryISO2 CountryISO3 CountryName 
PL   POL   POLAND 
IT   ITA   ITALY 

が次にあなたが

on myTab.Country = case(when length(myTab.Country) = 2 then CountryISO2 
         when length(myTab.Country) = 3 then CountryISO3 
         else CountryName end) 
0

このコメントに対して長すぎるように参加すると、このいずれかを使用して、テーブルに参加することができますようにあなたは、別のテーブルが必要になります。あなたのデータに非2桁のコードを抽出することにより

スタート:

その後
select distinct country 
from t 
where length(country) <> 2 
group by country; 

、スプレッドシートにこれをロードし、別の列に2桁のコードを追加します。 Wikipediaは、2桁の国コードの適切なソースである必要があります。

次に、大文字と小文字のステートメントまたはテーブルを作成して更新することができます。

しかし、まずは適切な割り当てを行う必要があります。

+0

データベースにテーブルを作成してそこの列を更新するのにウィキペディアの情報を使用しない方が良いでしょうか? –

+0

@JuanCarlosOropeza。 。 。名前が正しく、完全に綴られていると仮定した場合のみ。 –

関連する問題