SQL 하나의 필드에 대해 문자열 분할에 대한 질문입니다! 0 5 1,307

by 곤 [SQL Query] 문자열 분할 [2019.02.14 14:38:51]


먼저 닉네임 글자수세한 풀어주셔서 감사드립니다!! 원인을 몰랐었네요 ㅠㅠ

제 질문사항은...

Country and Club이라는 필드가 있습니다.

여기의 데이터값은 "국가이름+축구클럽이름" 이런 형태로 설정되어 있구요... 예를들어 "Uruguay Peñarol"는 우루과이에 있는 "Peñarol"라는 이름을 가진 축구클럽입니다.

여기서 궁금한 점이 Uruguay, spain ... 등의 나라는 띄워쓰기가 없어 TRIM으로 쉽게 TRIM( SPLIT( [Country and Club], " ", 1 )) 를 적용하여

"Uruguay" , "Peñarol" 이런식으로 분할가능 합니다.

 

하지만 South Korea, United States...등의 국가는 국가이름에 한번의 띄워쓰기가 있어서 추출하기가 어렵네요... 같은 TRIM을 적용하면...

 "South" , "Jeju United" 이런식으로 사우스 코리아가 아닌... 사우스만 추출되는 오류가 발생합니다.

실제론 "South Korea", "Jeju United"이런 식으로 분할 하고 싶습니다만...

 

그래서

TRIM( IF SPLIT( [Country and Club], " ", 1 ) = "United" THEN "United States"
ELSE SPLIT( [Country and Club], " ", 1 ) END ) 이런식으로 조건을 변경하더라도 미국에 대해서만 적용이 되기때문에 모든 국가에 대해 띄워쓰기에 관계없이 정확히"United States", "South Korea"...으로 국가이름과 팀이름을 구분할 수 있는 좋은 방법이 없을까요??

 

설명이 잘되었는지 모르겠지만 고수님들의 답변기다리고 있겠습니다!

처음 질문하는데 부족한점이 많지만 열심히 하겠습니다! 도움주시면 감사하겠습니다!

by 마농 [2019.02.14 15:33:50]

오라클은 아닌 듯 합니다. DBMS 를 명시해 주세요.
split 은 내장함수 인가요? 사용자 함수 인가요?
공백은 최대 두개인가요? 가능한 케이스를 모두 나열해 주세요.
국가 이름이 3개 단어로 되어 있는 자료도 존재한다던가?
클럼명에 공백이 들어가는 자료도 존재한다거나?
여러가지 샘플 자료를 예를 들어 주시면 좋습니다.


by 곤 [2019.02.14 15:52:51]

아! 태블로에 있는 예제샘플로 혼자 가공하던중에 나라와 클럽을 분할해서 관리하고 싶었습니다! 

아마 split은 태블로에서 적용되는 내장함수인가보내요.

 

어떤 식으로 분할되도 상관 없습니다! 나라와 클럽만 딱 구분해서 2개의 필드로 만들어 주고 싶은데... 역시 무리일까요?

다른 테이블에 나라필드가 있어서 조인하면 좋을텐데 1개의 테이블에 나라만 있는 필드가 없어서요...

England Aston Villa
Egypt Al Ahly
England West Bromwich Albion
England West Bromwich Albion
Egypt Al Ahly
Egypt Zamalek
Saudi Arabia Al Fateh
United States Los Angeles FC
Egypt Al Ahly
Egypt Al Ahly
England Liverpool
Saudi Arabia Al Taawoun
Egypt Al Ahly
Egypt Al Ahly
Finland KuPS
Greece Atromitos
Saudi Arabia Al Ittihad
England Arsenal
England Stoke City
England Wigan Athletic
Saudi Arabia Al Raed
Egypt Zamalek
Turkey Kasımpaşa
Russia Akhmat Grozny
Russia Rubin Kazan
Russia Zenit Saint Petersburg
Russia Spartak Moscow

 

샘플데이터는 이런식으로 되어 있습니다! 역시 이것만으론 불가능인가요???


by 마농 [2019.02.14 16:08:57]

2단어인 경우엔 명확하게 (1,1) 로 구분되지만
3단어의 경우엔 (1,2) 일지? (2,1) 일지 알 수 없죠.
4단어의 경우엔 (1,3), (2,2), (3,1) 로 경우의 수가 늘어나구요.
5단어의 경우엔 더 복잡하겠죠.
입력 자체를 공백이 아닌 다른 구분자로 받는 것이 좋습니다.
아예 컬럼을 두개로 나누는 것도 고려해 볼만 하구요.
국가 테이블을 하나 만드세요.(클럽수보다는 국가수가 더 적겠죠.)
아니면 두단어 또는 3단어 짜리 국가명만 추려보세요.(많지는 않을 듯)


by 곤 [2019.02.14 16:27:52]

역시 저 하나의 필드만가지고는 제가 원하는 분할은 어렵겠네요.

역시 국가 테이블을 만들어 연결하는게 가장 좋은 방법인것 같네요!  여러가지 방법제시해주셔서 감사합니다~

 

좋은하루되세요~~


by 마농 [2019.02.14 16:30:28]
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입