>  기사  >  데이터 베이스  >  mysql 고급 (8) varchar 유형을 정렬하는 방법

mysql 고급 (8) varchar 유형을 정렬하는 방법

黄舟
黄舟원래의
2017-02-09 15:28:021111검색

MySQL에서 varchar 유형을 정렬하는 방법

asc 업그레이드

desc 내림차순

MySQL에서 기본 순서는 숫자와 날짜 유형만 정렬하지만 varchar의 경우 문자형 정렬은 쓸모가 없을 것 같습니다. 이제 varchar 유형 정렬 문제를 해결하는 방법을 소개하겠습니다.

오늘 국내 전화번호 테이블을 정렬하다가 재미있는 문제를 발견했습니다. isdcode 필드를 작은 것부터 큰 것 순으로 정렬하고 싶어서 이렇게 썼습니다

SELECT * FROM gb_country_isdcode ORDER BY isdcode asc

결과는 다음과 같습니다. 따라하고 보니 제가 원하는 결과가 아니더군요. 그래서 검색하고 검색해본 결과 드디어 원인을 찾았습니다. 당연히 asc를 직접 사용하여 정렬할 수는 없습니다. int 형식으로 변환해야 정상적으로 정렬이 가능합니다. isdcode + 0이면 충분합니다

이렇게 작성합니다

SELECT * FROM gb_country_isdcode ORDER BY (isdcode+0) asc

원하시는 데이터의 종류가 비교적 많은 것 같습니다. . 그런데 왜 +0이 좋은 걸까요? +0 이후에는 INT 유형이 정렬로 변환되는 것으로 나타났습니다. 이렇게 하면 크기별로 정렬할 수 있습니다.

전화번호가 아니고 한자라면? 간단한 변환만 하면 한자를 정렬할 수 있습니다.

중국어 정보를 저장하는 필드를 쌍으로 묶으려면 mysql에서 order by를 사용하세요. 기본 결과는 중국어 병음순으로 정렬되지 않습니다. 한자 병음순으로 정렬하려면 문자를 설정해야 합니다. 데이터베이스 집합을 UTF8로 설정한 다음 정렬 시 필드 정보를 강제로 GBK로 변환하여 결과가 병음 순서로 정렬됩니다. 예를 들면 다음과 같습니다.

SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);

mysql에서 시도해 보았는데 결과는 매우 만족스러웠습니다.

결론은 쿼리할 때 변환 함수를 통해 문자셋 gb2312를 사용하여 쿼리한 데이터를 인코딩한 후 변환 후 중국어 정렬을 사용하면 된다는 것입니다. 그러나 실제로 테이블 필드의 문자 집합을 gb2312로 변경하면 페이지 값 전송 및 데이터베이스 액세스와 같은 많은 인코딩 문제가 발생하므로 매우 번거롭습니다. 쿼리할 때 문자 집합을 지정하는 한 실제 필드는 gb2312로 변경되지 않으며 매우 간단합니다.

위 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.