2017-10-25 2 views
-1

내 테이블에 두 가지 유형의 값 문자와 숫자가있는 열이 있습니다. 내림차순으로 문자를 오름차순으로 표시하려고합니다. 아래에서 사용하려고했습니다. :동일한 열에 문자와 숫자가있는 열의 경우 order by

order by case when substr(employe_info,1,1) between '0' and '9' then 1 else 2 end, 
employe_info 

그러나 숫자와 문자는 같은 순서 (오름차순 또는 내림차순)로 나타납니다.

지원하십시오

table name: test_1 
columns : id number(10) , 
      employe_info (varchar 50) 

데이터 :

id  employe_info 
1  123 
2  x 
3  y 
4  z 
5  678 
6  265 
8  a 
9  1020 

원하는 출력 :

id employe_info 
1 123 
6 265 
5 678 
9 1020 
4 z 
3 y 
2 x 
8 a 
+1

테이블에 대한 샘플을주세요! –

+0

당신이 묻는 것이 불분명하지만 일반적으로 수치 열과 텍스트 열에 숫자를 저장해야합니다. –

+0

코멘트에 물건을 추가하는 대신 업데이트로 질문을 편집 할 수 있습니까? – Ben

답변

0

그것은 당신이 특정 위치에 출력 순서를 원 등 ordering을 달성하기 어려운,하지만 decode을 사용하고 다음과 같이이를 수행 할 수 있습니다.

SELECT * 
    FROM test1 
ORDER BY DECODE (SUBSTR (employe_info, 1, 1), 
       '0', 1, 
       '1', 1, 
       '2', 1, 
       '3', 1, 
       '4', 1, 
       '5', 1, 
       '6', 1, 
       '7', 1, 
       '8', 1, 
       '9', 1, 
       'z', 2, 
       'y', 3, 
       'x', 4, 
        --Add here more alphabet as per your desired position 
       5); 

참고 :이 솔루션은 제공된 데이터 세트와 같습니다. 더 많은 데이터를 추가하면 extend에 디코드에서 alphabet의 위치가 필요합니다.

+0

감사! 그것의 예상대로 작동합니다. – user2862073