본문 바로가기

DB/Oracle

한글 초성 검색

초성검색을 찾아보았다.

select *

from event

where substr(title,1,1) >= '가' and substr(title,1,1) < '나'

where substr(title,1,1) >= '하'


찾아보면서 전에 몰랐던 사실을 한가지 알았다.
오라클의 substr 은 시작이 1이었다. 0인줄 알았고 0으로 사용하는 사람들도 많을 것이다.
0과 1의 결과가 같게 나오길래 궁금해서 오라클클럽 사이트에서 확인한 결과 0은 1과 같은 취급을 한다.
저렇게 검색하면 ㄱ이 모음인 문자가 검색된다.
UTF-8과 EUC-KR은 검색방법이 다르다는데 찾기가 어렵다.
검색방법의 요점은 연결된 코드를 찾아서 확인하는 것이기 때문에 둘다 비슷한 방법으로 검색하면 된다.


<!-- 초성검색 리스트 -->

<select id="getUserListInitial" parameterClass="map" >

  SELECT *

FROM (

 SELECT  ROWNUM RNUM, A.*

 FROM ( SELECT /*+$hint$*/

      USID,     

    US_NM,     

    OFCPS_SE,   

    OFCPS_NM,     

    T1.DEPT_CODE,

    WORK   ,

                                office_number, 

                                hp_number

  FROM TB_SP_USER_INFO T1 


  WHERE 1=1


           <isEqual property="initialCharSearch" compareValue="true">

                <![CDATA[AND $initialCharSlct$ REGEXP_LIKE( T1.US_NM,  '^[$initialChar$]')]]>

            </isEqual>

 )A

 WHERE ROWNUM  &lt; = #rownum#

)

WHERE  RNUM &gt; = #rnum#  

</select>

정규표현을 써서 하는 방법이 있으나 10g부터 지원되는 REGEXP_LIKE를 사용해야 하므로 테스트하지 못했다.
링크를 참고하면 될것이다.

참고로 여러종류의 문자코드는 여기를 참고하자.

'DB > Oracle' 카테고리의 다른 글

오라클 포트 설정하기  (0) 2014.05.21
한글 - 알파벳 - 숫자 순으로 정렬  (0) 2013.07.29
D-DAY 계산  (0) 2013.01.17
연속되는 숫자 만들기  (0) 2012.09.18
오라클 ORA-01476 에러  (0) 2011.11.11