반응형
정렬을 위한 Varchar to number 변환
주문하신 문의 사항이 있습니다.column
:
select * from mytable order by column asc — sort table
column
type은 varchar이므로 출력은 다음과 같습니다.
1
10
100
11
12
13
출력이 다음과 같이 되도록 숫자 값으로 정렬하려면 어떻게 정렬해야 합니까?
1
10
11
12
13
100
용도:
order by cast(column as unsigned) asc
이것은 치료를 원하시면 사용하시면 됩니다.column
~하듯이INT
만:
SELECT * FROM mytable ORDER BY column+0;
1
10
11
12
13
100
아니면 이걸 치료하고 싶다면요column
겸사겸사INT
그리고.VARCHAR
SELECT * FROM mytable ORDER BY column+0, column; #this will sort the column by VARCHAR first and then sort it by INT
abc
xyz
1
10
11
12
13
100
이 작업도 수행할 수 있습니다.
order by (0 + column) asc
단순히 선언에 의해 순서를 약간 수정하는 경우(필드별 순서에 "+0"을 추가) MySQL에서 필드를 자연스럽게 정렬하도록 강제할 수 있습니다.
> select * from mytable order by column+0 asc;
column
1
10
11
12
13
100
Added a full code script here , but need to sort 1001 and 1002 before - as well.
We have total 5 solution , means 5 different queries as solution with full script.
=============================================================
SET NAMES utf8;
SET foreign_key_checks = 0;
SET time_zone = 'SYSTEM';
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `varchar_sort`;
CREATE TABLE `varchar_sort` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`actual_user_id` varchar(200) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `varchar_sort` (`user_id`, `actual_user_id`) VALUES
(1, '1001-4'),
(2, '1001-1'),
(3, '1001-111'),
(4, '1002-1'),
(5, '1001-66'),
(6, '1001-100'),
(7, '1001-110');
SELECT user_id,actual_user_id,CONVERT(SUBSTRING_INDEX(actual_user_id,'-',-1),UNSIGNED INTEGER) AS num
FROM varchar_sort
ORDER BY num;
SELECT user_id,actual_user_id
FROM varchar_sort
ORDER BY CONVERT(SUBSTRING(actual_user_id, 6), SIGNED INTEGER);
SELECT user_id,actual_user_id
FROM varchar_sort
ORDER BY CONVERT(SUBSTRING(actual_user_id, LOCATE('-', actual_user_id) + 1), SIGNED INTEGER);
SELECT *, CAST(SUBSTRING_INDEX(actual_user_id, '-', -1) AS UNSIGNED) as num FROM varchar_sort ORDER BY num;
varchar_sort 순서에서 *를 convert(교체(actual_user_id, '-', SIGNED INTEGER)로 선택합니다.
**Need to sort 1001 and 1002 as well.**
언급URL : https://stackoverflow.com/questions/1868965/varchar-to-number-conversion-for-sorting
반응형
'programing' 카테고리의 다른 글
클래스 접두사별 CSS 셀렉터가 있습니까? (0) | 2023.09.12 |
---|---|
XML 문서에서 탈출하려면 어떤 문자가 필요합니까? (0) | 2023.09.12 |
CLOWER_Bound 구현 (0) | 2023.09.12 |
필요한 Node.js ES6 클래스 (0) | 2023.09.12 |
jquery가 없는 맨 위 애니메이션 스크롤 (0) | 2023.09.12 |