2013-02-28 2 views
5

나는 데이터베이스에 태그가있는 큰 테이블을 가지고있다. 모든 단어에 라틴 문자 (영어, 프랑스어 ...)가있는 것은 아닙니다. 일부 단어는 라틴어 이외의 문자 (히브리어, 페르시아어, 아랍어 ...)를 사용합니다.MySQL 문자열의 언어로 정렬

어떻게 ORDER BY [Language of word]을 선택할 수 있습니까?

+0

선택 * 테이블 순서로 변환하여 ('word_column'UTF8을 사용) ASC를 – Shridhar

+0

동일한 테이블의 필드에 단어의 실제 언어를 저장합니까? 그런 통역사를 쓰려고하면 거의 불가능할 것입니다. 예를 들어'different '라는 단어를 어떻게 처리 할 계획입니까? 프랑스어와 영어로 철자가 동일합니다. 현악기 내의 캐릭터를보고 전적으로 이것을하고 싶다면 매우 깊은 물 속에있게 될 것이고 거의 불가능할 것입니다. – BenM

+0

@benM, 당신이 언급 한 단어는 프랑스어로 "e"를 첫 번째 "e"에 사용하기 때문에 나쁜 예입니다. 하지만 개입의 이론은 유효합니다 – Sebas

답변

4

두 번째 테이블 언어를 정의한 다음 각 항목에 언어 태그를 첨부 할 수 있습니다. 정렬 순서 열을 언어 테이블에 추가 한 다음 선택할 때 언어 테이블과 조인에 대해 태그 필드와 언어 정렬 순서에 따라 조인 할 수 있습니다.

+0

의미 : 1- addtags.php 페이지에 n 개의 입력을 추가해야합니다. 문자열의 언어가 히브리어, 페르시아어인지 여부를 감지 할 수있는 방법이 없습니다. 2 이미 많은 단어로 만든 표가 있습니다 –

+0

어쩌면 별도의 질문을 게시하여 utf 문자 집합에서 언어 식별자를 추출하는 방법을 물을 수 있습니다. .. – Zak

+0

귀하의 질문에 대한 나의 이전 의견을 참조하십시오 - 게르만 언어에 걸쳐 동일한 철자를 어떻게 처리 할 계획입니까? 예 :'different' ... – BenM

1

당신은 MySQL의 기능이라고 FIELD()

ORDER BY FIELD(Language,'English','Japan','Swedish') 

을 사용하거나 주문 적은 언어가있는 경우 :

ORDER BY `ID`, 
    CASE `Language` 
    WHEN 'English' THEN 1 
    WHEN 'Japenese' THEN 2 
    WHEN 'Swedish' THEN 3 
    END 
+1

그는 언어를 다른 열에 저장했다고 가정합니다. – BenM