MySQL [Mariadb] 10.7.0 버전에 새로 생긴 natural_sort_key()
페이지 정보
본문
NATURAL_SORT_KEY 가 MariaDB 10.7.0 에 추가되었습니다.
이번에 mariadb 10.7.0버전에서 네추럴 정렬관련해서 기능추가 되었습니다.
사용법은 order by 절에 natural_sort_key(정렬하고자하는 컬럼)을 넣어 주시면 됩니다.
아래는 단순 order by와 natural_sort_key로 정렬 했을때 차이를 보여 주는 예시입니다.
Example
CREATE TABLE t1 (c TEXT);
INSERT INTO t1 VALUES ('b1'),('a2'),('a11'),('a1');
SELECT c FROM t1;
+------+
| c |
+------+
| b1 |
| a2 |
| a11 |
| a1 |
+------+
SELECT c FROM t1 ORDER BY c;
+------+
| c |
+------+
| a1 |
| a11 |
| a2 |
| b1 |
+------+
정렬되지 않은 정렬, 일반 정렬 및 자연 정렬:
TRUNCATE t1;
INSERT INTO t1 VALUES
('5.5.31'),('10.7.0'),('10.2.1'),
('10.1.22'),('10.3.32'),('10.2.12');
SELECT c FROM t1;
+---------+
| c |
+---------+
| 5.5.31 |
| 10.7.0 |
| 10.2.1 |
| 10.1.22 |
| 10.3.32 |
| 10.2.12 |
+---------+
SELECT c FROM t1 ORDER BY c;
+---------+
| c |
+---------+
| 10.1.22 |
| 10.2.1 |
| 10.2.12 |
| 10.3.32 |
| 10.7.0 |
| 5.5.31 |
+---------+
SELECT c FROM t1 ORDER BY NATURAL_SORT_KEY(c);
+---------+
| c |
+---------+
| 5.5.31 |
| 10.1.22 |
| 10.2.1 |
| 10.2.12 |
| 10.3.32 |
| 10.7.0 |
+---------+
IP 정렬, 정렬되지 않음, 일반 정렬 및 자연 정렬::
TRUNCATE t1;
INSERT INTO t1 VALUES
('192.167.3.1'),('192.167.1.12'),('100.200.300.400'),
('100.50.60.70'),('100.8.9.9'),('127.0.0.1'),('0.0.0.0');
SELECT c FROM t1;
+-----------------+
| c |
+-----------------+
| 192.167.3.1 |
| 192.167.1.12 |
| 100.200.300.400 |
| 100.50.60.70 |
| 100.8.9.9 |
| 127.0.0.1 |
| 0.0.0.0 |
+-----------------+
SELECT c FROM t1 ORDER BY c;
+-----------------+
| c |
+-----------------+
| 0.0.0.0 |
| 100.200.300.400 |
| 100.50.60.70 |
| 100.8.9.9 |
| 127.0.0.1 |
| 192.167.1.12 |
| 192.167.3.1 |
+-----------------+
SELECT c FROM t1 ORDER BY NATURAL_SORT_KEY(c);
+-----------------+
| c |
+-----------------+
| 0.0.0.0 |
| 100.8.9.9 |
| 100.50.60.70 |
| 100.200.300.400 |
| 127.0.0.1 |
| 192.167.1.12 |
| 192.167.3.1 |
+-----------------+
참고자료
https://mariadb.com/kb/en/natural_sort_key/
https://runebook.dev/ko/docs/mariadb/natural_sort_key/index
https://sir.kr/pg_tip/16894
이번에 mariadb 10.7.0버전에서 네추럴 정렬관련해서 기능추가 되었습니다.
사용법은 order by 절에 natural_sort_key(정렬하고자하는 컬럼)을 넣어 주시면 됩니다.
아래는 단순 order by와 natural_sort_key로 정렬 했을때 차이를 보여 주는 예시입니다.
Example
CREATE TABLE t1 (c TEXT);
INSERT INTO t1 VALUES ('b1'),('a2'),('a11'),('a1');
SELECT c FROM t1;
+------+
| c |
+------+
| b1 |
| a2 |
| a11 |
| a1 |
+------+
SELECT c FROM t1 ORDER BY c;
+------+
| c |
+------+
| a1 |
| a11 |
| a2 |
| b1 |
+------+
정렬되지 않은 정렬, 일반 정렬 및 자연 정렬:
TRUNCATE t1;
INSERT INTO t1 VALUES
('5.5.31'),('10.7.0'),('10.2.1'),
('10.1.22'),('10.3.32'),('10.2.12');
SELECT c FROM t1;
+---------+
| c |
+---------+
| 5.5.31 |
| 10.7.0 |
| 10.2.1 |
| 10.1.22 |
| 10.3.32 |
| 10.2.12 |
+---------+
SELECT c FROM t1 ORDER BY c;
+---------+
| c |
+---------+
| 10.1.22 |
| 10.2.1 |
| 10.2.12 |
| 10.3.32 |
| 10.7.0 |
| 5.5.31 |
+---------+
SELECT c FROM t1 ORDER BY NATURAL_SORT_KEY(c);
+---------+
| c |
+---------+
| 5.5.31 |
| 10.1.22 |
| 10.2.1 |
| 10.2.12 |
| 10.3.32 |
| 10.7.0 |
+---------+
IP 정렬, 정렬되지 않음, 일반 정렬 및 자연 정렬::
TRUNCATE t1;
INSERT INTO t1 VALUES
('192.167.3.1'),('192.167.1.12'),('100.200.300.400'),
('100.50.60.70'),('100.8.9.9'),('127.0.0.1'),('0.0.0.0');
SELECT c FROM t1;
+-----------------+
| c |
+-----------------+
| 192.167.3.1 |
| 192.167.1.12 |
| 100.200.300.400 |
| 100.50.60.70 |
| 100.8.9.9 |
| 127.0.0.1 |
| 0.0.0.0 |
+-----------------+
SELECT c FROM t1 ORDER BY c;
+-----------------+
| c |
+-----------------+
| 0.0.0.0 |
| 100.200.300.400 |
| 100.50.60.70 |
| 100.8.9.9 |
| 127.0.0.1 |
| 192.167.1.12 |
| 192.167.3.1 |
+-----------------+
SELECT c FROM t1 ORDER BY NATURAL_SORT_KEY(c);
+-----------------+
| c |
+-----------------+
| 0.0.0.0 |
| 100.8.9.9 |
| 100.50.60.70 |
| 100.200.300.400 |
| 127.0.0.1 |
| 192.167.1.12 |
| 192.167.3.1 |
+-----------------+
참고자료
https://mariadb.com/kb/en/natural_sort_key/
https://runebook.dev/ko/docs/mariadb/natural_sort_key/index
https://sir.kr/pg_tip/16894
댓글목록
등록된 댓글이 없습니다.