2017-03-10 6 views
1

나는 Country라는 열을 포함하는 MySQL 데이터베이스 테이블을 가지고 있습니다. 때로는 전체 CNT 이름, 때로는 ISO 3 또는 ISO 2 CNT 코드 -이 테이블에 사용 된 소스 파일에 따라 다릅니다. 국가 이름은 항상 대문자로 표기됩니다 (캐나다, 폴란드 등).2 자리 CNT 코드 또는 전체 CNT 이름을 3 자리 CNT 코드로 변환하는 방법 MySQL

국가 이름/국가 ISO 3 코드를 ISO 2 CNT 코드 (CA, PL 등)로 변환 할 수있는 쿼리를 일부 추가해야합니다. select left (Country, 2) from tb_name

이 모든 국가에 도움이되지 않습니다 :

나는 쉬운 솔루션을 사용하려고 노력했다. "POLAND"에서 첫 번째 두 개의 왼쪽 편지 만 가져 오면 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; 

, 스프레드 시트에이를로드하고 별도의 열에서 두 자리 코드를 추가합니다. Wikipedia는 2 자리 국가 코드를위한 훌륭한 소스 여야합니다.

그런 다음 업데이트 목적으로 거대한 사례 명세서 나 표를 만들 수 있습니다.

하지만 적절한 할당을해야합니다.

+0

위키피디아 정보를 사용하여 데이터베이스에 테이블을 만들고 열을 업데이트하는 것이 더 좋을까요? –

+0

@JuanCarlosOropeza. . . 이름이 정확하고 철자가 틀렸다고 가정 할 때만. –