'Database/자주사용'에 해당되는 글 4건

  1. 2016.03.03 오라클 order by 정렬순서(한글,영어,숫자)
  2. 2013.09.12 숫자/문자 체크
  3. 2012.02.07 오라클 wait
  4. 2012.02.03 오라클 TIMESTAMP

오라클 order by 정렬순서(한글,영어,숫자)

|

출처 : http://www.gurubee.net/m/article/66519

 

ㄱㄴㄷㄹ..... 순으로 order by 를 하려고 하는데요...

그렇게 할 경우 영어가 우선순위가 되는데 

혹시 ㄱㄴㄷㄹ순으로 나오되 영어는 뒤에 나오게 하려면 어떻게 해야하나요

  • 아발란체 (4,916:Lv47) [2016년 01월 15일 14시]

    WITH T AS (
      SELECT 'ㄱ' AS val FROM DUAL UNION ALL
      SELECT 'ㄴ' FROM DUAL UNION ALL
      SELECT 'ㄷ' FROM DUAL UNION ALL
      SELECT 'A' FROM DUAL UNION ALL
      SELECT 'B' FROM DUAL
    )  
    SELECT * FROM T ORDER BY CONVERT(val, 'ISO2022-KR')

    답글

  • 개꿈 (95:Lv9) [2016년 01월 15일 14시]

    와우~ 감사합니다 아발란체님~^^

  • 대한민국만세 (150:Lv11) [2016년 01월 15일 14시]

    지원하지 않는 캐릭터셋이라고 하는데요 ㅜㅜ

    오라클 11버전이고 토드에서 실행했습니다.

  • 대한민국만세 (150:Lv11) [2016년 01월 15일 15시]

    1
    2
    3
    4
    5
    6
    7
    8
    WITH T AS (
       SELECT 'ㄱ' AS val FROM DUAL UNION ALL
       SELECT 'ㄴ' FROM DUAL UNION ALL
       SELECT 'ㄷ' FROM DUAL UNION ALL
       SELECT 'A' FROM DUAL UNION ALL
       SELECT 'B' FROM DUAL
     
     SELECT * FROM T ORDER BY CASE WHEN VAL >'Z' THEN '0' ELSE '1' END ;

     

    답글

  • jkson (1,133:Lv33) [2016년 01월 15일 15시]

    아발란체님 꺼 잘 되는데 이상하네요.

    대문자 Z보다 소문자 z가 더 클걸요? 그리고 영문끼리, 한글끼리 order by 먹히게 하려면

    ORDER BY CASE WHEN VAL >'Z' THEN '0' ELSE '1' END 뒤에 val 추가하셔야할 것 같아요. 

    그렇다고 하더라도 'AA'., 'A가' 라는 데이터가 있다면 의도한 바는 'A가'가 먼저나오는 것인데 'AA' 가 먼저 나오게 될 것 같아요.

     

    구글링 해보니..

     

    한글, 영문, 숫자에 대한 정렬 알고리즘
     
    오라클에서 제공하는 order by 에 대힌 default 정렬 순서
     => 숫자 > 영문 > 한글
     
    order by convert (컬럼명, 'VN8VN3')
     => 숫자 > 한글 > 영문
     
    order by convert (컬럼명, 'US8ICL')
     => 한글 > 영문 > 숫자
     
    order by convert (컬럼명, 'ISO2022-KR')
     => 한글 > 숫자 > 영문
     
    order by convert (컬럼명, 'UTFE')
     => 영문 > 한글 > 숫자
     
    이라고 하네요.

 

And

숫자/문자 체크

|

숫자만 -> trim(translate(cmp_user_id,'1234567890','  ')) is null

문자만 -> trim(translate(cmp_user_id,'1234567890','  ')) is not null

And

오라클 wait

|
select  ss.logon_time, ss.terminal,
        ss.username, se.time_waited,
        so.physical_reads
from v$session_event se, v$session ss, v$sess_io so
where 1=1
and event like '%db file %'
and se.sid = ss.sid
and ss.sid = so.sid
order by time_waited desc;





v$session_wait 를 조회하세요.


 

V$EVENT_NAME

인스턴스에서  정의된 대기이벤트의 정보를 가지는 참조성 View

이벤트 , Parameter1, Parameter2, Parameter3

V$SYSTEM_EVENT

인스턴스의 기동 , 세션에서 발생한 대기 이벤트의 누계 통계치(인스턴스 단위)

인스턴스의 전반적인 안정도를 판단할 있으며, 특정 시간대의 Delta 정보를 산출하여 구간 분석 가능

V$SESSION_EVENT

현재 접속되어 있는, 세션 대기이벤트의 누계 통계치

접속한 세션 대해, 이벤트 통계정보를 파악

V$SESSION_WAIT

세션 현재 대기하고 있는 대기이벤트에 대한 상세 정보(P1,P2,P3,대기시간 ) 제공

누적데이터가 아니고, 실시간 데이터이므로, 반복적으로, Query 수행하여 대기이벤트의 상황을 파악해야

V$SYSTEM_WAIT_CLASS

10g NF.인스턴스 기동 발생된 대기이벤트를 관련된 Class별로 Grouping 결과 제공

대기이벤트의 클래스 단위로, 인스턴스의 대기 상황 파악

V$SESSION_WAIT_CLASS

10g NF. 현재 접속되어 있는 세션 대기이벤트를 Class별로 Grouping 결과 제공

대기이벤트의 클래스 단위로, 세션 대기 상황 파악

V$SESSION_WAIT_HISTORY

10g NF. 최근 10개의 V$SESSION_WAIT 데이터 제공

Session Wait 대한 아주 짧은 이력 정보 제공

V$EVENT_HISTOGRAM

10g NF. 인스턴스 기동후의 대기이벤트에 대한 히스토그램 제공

버킷(대기시간의 구간) 대기이벤트의 발생 이력 파악에 도움

V$ACTIVE_SESSION_HISTORY

10g NF. Active Session 이력정보 제공

1 단위로 Active 세션 기본 정보,SQL수행정보, PQ 관련정보, 대기Event정보, 대기 Event관련 OBJ#, FiLE#, BLOCK# 등의 정보 제공
And

오라클 TIMESTAMP

|

SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP -INTERVAL '20' MINUTE)
WHERE SEQ ='1'

20분전 데이터 조회
And
prev | 1 | next