database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6971 게시물 읽기
No. 6971
NVARCHAR정렬 질문
작성자
달바라기(crimsonx)
작성일
2016-04-22 18:27
조회수
3,880

안녕하세요

 

테이블 : TEST

 

floor

------

AF13

AF12

AF1

BF1

BF2

AF11

AF10

AF7

AF6

AF5

AF2

BF3

AF9

AF8

BF4

AF4

AF3

 

이런 내용을 아래처럼 정렬하고 싶습니다.

floor

------

AF13

AF12

AF11

AF10

AF9

AF8

AF7

AF6

AF5

AF4

AF3

AF2

AF1

BF1

BF2

BF3

BF4

 

그래서

SELECT * FROM TEST

ORDER BY SUBSTRING(FL_CODE, 1, 1) ,

CASE WHEN FL_CODE LIKE 'A%' THEN FL_CODE END DESC,

CASE WHEN FL_CODE LIKE 'B%' THEN FL_CODE END ASC

 

하니까... AF1~9까지는 정렬이 문제가 없는데

AF10부터 문제가 생기네요

 

AF15

AF14

AF13

AF12

AF11

AF10

AF1

 

이렇게 정렬이 되어 버리네요.

char형태라서 정렬이 이렇게 되는건 알겠는데, 어떻게 해결해야 할까요?

 

이 글에 대한 댓글이 총 4건 있습니다.

AF 와 BF 2개 값 고정인가요?

아니면 다른 형태도 존재하나요?

F 외에 다른 값이 오거나 자리수도 2자리가 아닌 여러자리가 오거나 할 수 있는지?

이런 경우 숫자 외에 앞에 문자값 정렬기준은?

마농(manon94)님이 2016-04-25 08:48에 작성한 댓글입니다.

넵 AF와 BF는 고정입니다.

다른 문자는 사용되지 않습니다.

뒤에 숫자만 바뀝니다.

달바라기(crimsonx)님이 2016-04-25 11:13에 작성한 댓글입니다.

SELECT fl_code
  FROM test
 ORDER BY SUBSTRING(fl_code, 1, 2)
        , SUBSTRING(fl_code, 3, 9)
        * CASE SUBSTRING(fl_code, 1, 2) WHEN 'AF' THEN -1 ELSE 1 END
;

마농(manon94)님이 2016-04-25 11:33에 작성한 댓글입니다.
이 댓글은 2016-04-25 13:55에 마지막으로 수정되었습니다.

감사 합니다. ^^

달바라기(crimsonx)님이 2016-04-25 18:42에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6974시스템(서버, DB) 날짜 임의로 변경하는 방법 [2]
정길환
2016-05-04
4037
6973MSSQL 2008 Express 백업 스크립트좀 봐주세요
김우성
2016-04-29
3883
6972WHERE 절 상관없이 COUNT()결과 보기가 가능한가요? [2]
달바라기
2016-04-25
3703
6971NVARCHAR정렬 질문 [4]
달바라기
2016-04-22
3880
6970UNION ALL에서 ORDER BY 사용 질문 입니다. [2]
달바라기
2016-04-19
3968
6969MSSQL R2 2008 서버 ERROR 해결방법문의
스마일
2016-04-18
3880
6968IF문 사용 [2]
잘하고싶다
2016-04-15
3998
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다