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

黄舟
풀어 주다: 2017-02-09 15:28:02
원래의
1161명이 탐색했습니다.

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)를 참고해주세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿