중화사전망 - 자전 검색 - Mysql 에서 성씨 획별로 정렬하는 방법

Mysql 에서 성씨 획별로 정렬하는 방법

때때로 프로젝트는 한자의 병음 (예: 연락처 목록, 광산 분류 등) 에 따라 정렬해야 한다. A 에서 z 까지의 병음 글자에 따라 표시해야 하는 것도 있습니다.

한자를 저장하는 필드 코드가 GBK 문자 세트를 사용하는 경우, GBK 의 내부 코드 자체가 병음 정렬 방법 (3755 개의 일반적인 1 차 한자는 병음 정렬, 2 차 한자는 병음 정렬 안 함, 인명 등은 모두 상용한자라는 점을 감안하면 1 차 한자만 정확하게 정렬하면 됨), 정렬 by 를 직접 추가하면 충분합니까? 이름 ASC, 질의 결과는 성별로 오름차순으로 정렬됩니다. 이름을 저장하는 필드에 utf8 문자 세트를 사용하는 경우 정렬 시 코드 변환이 필요합니다. 해당 코드는 Order by Convert (이름은 gbk 사용) ASC 입니다. 마찬가지로 질의 결과는 성을 기준으로 오름차순으로 정렬됩니다.

병음 이니셜로 표시할 때는 중간 표를 사용하여 글자에 해당하는 한자 인코딩 범위를 저장해야 합니다. 이 경우 매번 한자를 꺼내서 중간 표와 비교할 수 있다. 중간 테이블에 데이터를 생성 및 삽입하는 데 사용되는 SQL 은 다음과 같습니다.

/*

Navicat? MySQL? 데이터? 전송

목표? 서버? 유형:? 관계형 데이터베이스

목표? 서버? 버전? :? 506 17

파일? 인코딩? :? 6500 1

날짜:? 20 15-07-02? 11:12:15

*/

설정? FOREIGN _ KEY _ CHECKS = 0;;

-응? --

-응? 책상? 구조? 뭐 때문에? T_coslers

-응? --

방울? 책상? 만약? 존재합니까? ` t _ coslers

창조? 책상? ` t_coslers `? (참조)

` id `? Int( 1 1)? 그렇지 않나요? 널? 자동 증가,

` f_PY `? Char( 1)? 성격? 설정? Utf8? 위약? 비어 있습니다.

CBegin'? Smallint(5)? 서명되지 않았습니까? 그렇지 않나요? 비어 있습니다.

CEnd'? Smallint(5)? 서명되지 않았습니까? 그렇지 않나요? 비어 있습니다.

초급? 열쇠? (` id `)

)? ENGINE=InnoDB? AUTO_INCREMENT=24? 위약? Charset = Latin1;

-응? --

-응? 기록? 의? T_coslers

-응? --

삽입? 로? ` t_coslers `? 가치관? ('1',? 하나',? 452 17',? 45252');

삽입? 로? ` t_coslers `? 가치관? ('2',? B',? 45253',? 45760');

삽입? 로? ` t_coslers `? 가치관? ('3',? C',? 4576 1',? 463 17');

삽입? 로? ` t_coslers `? 가치관? ('4',? D',? 463 18',? 46825');

삽입? 로? ` t_coslers `? 가치관? ('5',? E',? 46826',? 47009');

삽입? 로? ` t_coslers `? 가치관? ('6',? F',? 470 10',? 47296');

삽입? 로? ` t_coslers `? 가치관? ('7',? G',? 47297',? 476 13');

삽입? 로? ` t_coslers `? 가치관? ('8',? H',? 476 14',? 48 1 18');

삽입? 로? ` t_coslers `? 가치관? ('9',? J',? 48 1 19',? 4906 1');

삽입? 로? ` t_coslers `? 가치관? ('10',? K',? 49062',? 49323');

삽입? 로? ` t_coslers `? 가치관? ('1 1',? L',? 49324',? 49895');

삽입? 로? ` t_coslers `? 가치관? ('12',? M',? 49896',? 50370');

삽입? 로? ` t_coslers `? 가치관? ('13',? N',? 5037 1',? 506 13');

삽입? 로? ` t_coslers `? 가치관? ('14',? 오,? 506 14',? 5062 1');

삽입? 로? ` t_coslers `? 가치관? ('15',? P',? 50622',? 50905');

삽입? 로? ` t_coslers `? 가치관? ('16',? Q',? 50906',? 5 1386');

삽입? 로? ` t_coslers `? 가치관? ('17',? R',? 5 1387',? 5 1445');

삽입? 로? ` t_coslers `? 가치관? ('18',? S',? 5 1446',? 522 17');

삽입? 로? ` t_coslers `? 가치관? ('19',? T',? 522 18',? 52697');

삽입? 로? ` t_coslers `? 가치관? ('20',? W',? 52698',? 52979');

삽입? 로? ` t_coslers `? 가치관? ('2 1',? 엑스',? 52980',? 53640');

삽입? 로? ` t_coslers `? 가치관? ('22',? Y',? 53689',? 54480');

삽입? 로? ` t_coslers `? 가치관? ('23',? Z',? 5448 1',? 55289'); 중간 테이블을 사용하여 한자의 첫 글자를 질의하는 샘플 SQL 은 다음과 같습니다 (utf8 문자 세트).

선택? T 1.id,? T 1.name, t2.f_PY

어디서 왔어요? T_user? T 1,? T_coslers? T2

Whereconv (hex (left (convert (t1.name? 사용할까요? Gbk? ),? 1),? 16,? 10)? 사이? T2.cBegin? 그리고는요. T2.cEnd

주문? 누구한테? 변환 (t 1.name? 사용할까요? Gbk)? ASC 는 위의 정렬 및 분류 방법이 다음자에 대한 지원이 좋지 않아 정확도가 높은 학생이 신중하게 사용해야 한다는 점에 유의해야 합니다.