반응형

Mysql 자음 초성 추출 함수, 자음으로 검색, 초성 검색

함수를 만들어서 추출해보자. 

CREATE DEFINER=`gn`@`%` FUNCTION `fn_choSearch`(`str` varchar(20)) RETURNS varchar(20) CHARSET utf8 
 
BEGIN 
     declare returnStr varchar(100); 
     declare cnt int; 
     declare i int; 
     declare j int; 
     declare tmpStr varchar(10); 
 
     if str is null then 
         return ''; 
     end if; 
 
     set cnt = length(str)/3; 
     set i = 1; 
     set j = 1; 
 
     while i <=cnt DO 
           set tmpStr = substring(str,i,j); 
           set returnStr = concat(ifnull(returnStr,''), 
 
            case when tmpStr rlike '^(ㄱ|ㄲ)' OR ( tmpStr >= '가' AND tmpStr < '나' ) then 'ㄱ' 
                 when tmpStr rlike '^ㄴ' OR ( tmpStr >= '나' AND tmpStr < '다' ) then 'ㄴ' 
                 when tmpStr rlike '^(ㄷ|ㄸ)' OR ( tmpStr >= '다' AND tmpStr < '라' ) then 'ㄷ' 
                 when tmpStr rlike '^ㄹ' OR ( tmpStr >= '라' AND tmpStr < '마' ) then 'ㄹ' 
                 when tmpStr rlike '^ㅁ' OR ( tmpStr >= '마' AND tmpStr < '바' ) then 'ㅁ' 
                 when tmpStr rlike '^ㅂ' OR ( tmpStr >= '바' AND tmpStr < '사' ) then 'ㅂ' 
                 when tmpStr rlike '^(ㅅ|ㅆ)' OR ( tmpStr >= '사' AND tmpStr < '아' ) then 'ㅅ' 
                 when tmpStr rlike '^ㅇ' OR ( tmpStr >= '아' AND tmpStr < '자' ) then 'ㅇ' 
                 when tmpStr rlike '^(ㅈ|ㅉ)' OR ( tmpStr >= '자' AND tmpStr < '차' ) then 'ㅈ' 
                 when tmpStr rlike '^ㅊ' OR ( tmpStr >= '차' AND tmpStr < '카' ) then 'ㅊ' 
                 when tmpStr rlike '^ㅋ' OR ( tmpStr >= '카' AND tmpStr < '타' ) then 'ㅋ' 
                 when tmpStr rlike '^ㅌ' OR ( tmpStr >= '타' AND tmpStr < '파' ) then 'ㅌ' 
                 when tmpStr rlike '^ㅍ' OR ( tmpStr >= '파' AND tmpStr < '하' ) then 'ㅍ' 
            else 'ㅎ' end); 
           set i=i+1; 
     end while; 
  RETURN returnStr; 
END;

 

자바스크립트로 검색어가 초성인지 아닌지 체크

var keyword = $("#keyword").val().toUpperCase(); 
var choKeyword = choHangul($("#keyword").val()); 
 
//초성검색 구분 
 
if (keyword!="" && choKeyword==""){ 
    choDiv = 'Y'; 
}else{ 
    choDiv = 'N'; 
} 

/* 초성추출 */ 
function choHangul(str) { 
  cho = ["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"]; 
  result = ""; 
  for(i=0;i<str.length;i++) { 
      code = str.charCodeAt(i)-44032; 
    if(code>-1 && code<11172) result += cho[Math.floor(code/588)]; 
  } 
  return result; 
} 

 

 

쿼리에서 초성 추출하자.

WHERE 1=1 
<isEqual prepend='AND' property="choDiv" compareValue="N" > 
    S1.STOP_NAME LIKE concat('%',#keyword#,'%') OR S1.STOP_ID LIKE concat('%',#keyword#,'%') 
</isEqual> 
<isEqual prepend='AND' property="choDiv" compareValue="Y" > 
    fn_choSearch(S1.stop_name) LIKE concat('%',#keyword#,'%') OR S1.STOP_ID LIKE concat('%',#keyword#,'%') 
</isEqual> 

 

choDiv 값이 N 일 경우 일반검색
choDiv 값이 Y 일 경우 위의 oracle함수를 사용하여 초성검색


예를 들어
이렇게 구현을 하면 'ㄱㄴㄷ' 으로 검색을 하면
가나다
간난단
갇낟닫
...
등 초성이 ㄱ,ㄴ,ㄷ 인 데이터가 검색된다.

출처 : https://aljjabaegi.tistory.com/220

 

Mysql 자음 초성 추출 함수, 자음으로 검색, 초성 검색

Mysql 자음 초성 추출 함수, 자음으로 검색, 초성 검색 개발을 하다보면 자음으로만 검색할 수 있게 해달라는 요청이 들어오곤 한다. 그럴때마다 유용하게 사용하는 것이 아래의 함수이다. 그냥 복사 붙여넣고 실..

aljjabaegi.tistory.com

 

반응형
반응형

MYSQL 특수문자 치환, 특수문자 치환 찾기MYSQL 특수문자 치환, 특수문자 치환 찾기. CHAR()

SELECT char(63);
SELECT ASCII('?') FROM DUAL;
SELECT CONCAT('http://naver.com/Mobile.dm',char(63),'123') MOBILE_URL

 

반응형
반응형

*** Tibero 접속 
1.  SSH 접속
>  su – root

2. 유저 root에서 Tibero 로 변경
>  su - tibero

3.디비 호출
> export TB_SID=디비명

4. tbsql 아이디/비밀번호
> tbsql 아이디
  pw...

//----------------------------------

 

반응형
반응형

Tibero(티베로) 함수 Function

4. 함수
4.1. 개요
4.1.1. 단일 로우 함수
4.1.2. 집단 함수
4.1.3. 분석 함수
4.2. 함수 목록
4.2.1. ABS
4.2.2. ACOS
4.2.3. ADD_MONTHS
4.2.4. AGGR_CONCAT
4.2.5. APPENDCHILDXML
4.2.6. ASCII
4.2.7. ASCIISTR
4.2.8. ASIN
4.2.9. ATAN
4.2.10. ATAN2
4.2.11. AVG
4.2.12. BITAND
4.2.13. CAST
4.2.14. CEIL
4.2.15. CHARTOROWID
4.2.16. CHR
4.2.17. COALESCE
4.2.18. COMPOSE
4.2.19. CONCAT
4.2.20. CONVERT
4.2.21. CORR
4.2.22. COS
4.2.23. COSH
4.2.24. COUNT
4.2.25. COVAR_POP
4.2.26. COVAR_SAMP
4.2.27. CUME_DIST
4.2.28. CURRENT_DATE
4.2.29. CURRENT_TIME
4.2.30. CURRENT_TIMESTAMP
4.2.31. DBTIMEZONE
4.2.32. DECODE
4.2.33. DECOMPOSE
4.2.34. DELETEXML
4.2.35. DENSE_RANK
4.2.36. DUMP
4.2.37. EMPTY_BLOB
4.2.38. EMPTY_CLOB
4.2.39. EXISTSNODE
4.2.40. EXP
4.2.41. EXTRACT
4.2.42. EXTRACT(XML)
4.2.43. EXTRACTVALUE
4.2.44. FIRST
4.2.45. FIRST_VALUE
4.2.46. FLOOR
4.2.47. FROM_TZ
4.2.48. GREATEST
4.2.49. GROUPING
4.2.50. GROUPING_ID
4.2.51. GROUP_ID
4.2.52. HEXTORAW
4.2.53. INET_ATON
4.2.54. INET_NTOA
4.2.55. INITCAP
4.2.56. INSERTCHILDXML
4.2.57. INSERTCHILDXMLAFTER
4.2.58. INSERTCHILDXMLBEFORE
4.2.59. INSERTXMLAFTER
4.2.60. INSERTXMLBEFORE
4.2.61. INSTR
4.2.62. ISFRAGMENT
4.2.63. KURT
4.2.64. LAG
4.2.65. LAST_DAY
4.2.66. LAST
4.2.67. LAST_VALUE
4.2.68. LEAD
4.2.69. LEAST
4.2.70. LENGTH
4.2.71. LN
4.2.72. LNNVL
4.2.73. LOCALTIMESTAMP
4.2.74. LOG
4.2.75. LOWER
4.2.76. LPAD
4.2.77. LTRIM
4.2.78. MAX
4.2.79. MEDIAN
4.2.80. MIN
4.2.81. MOD
4.2.82. MONTHS_BETWEEN
4.2.83. NEW_TIME
4.2.84. NEXT_DAY
4.2.85. NLSSORT
4.2.86. NLS_INITCAP
4.2.87. NLS_LOWER
4.2.88. NLS_UPPER
4.2.89. NTILE
4.2.90. NULLIF
4.2.91. NUMTODSINTERVAL
4.2.92. NUMTOYMINTERVAL
4.2.93. NVL
4.2.94. NVL2
4.2.95. ORA_HASH
4.2.96. OVERLAPS
4.2.97. PERCENT_RANK
4.2.98. PERCENTILE_CONT
4.2.99. PERCENTILE_DISC
4.2.100. POWER
4.2.101. RANK
4.2.102. RATIO_TO_REPORT
4.2.103. RAWTOHEX
4.2.104. REGEXP_COUNT
4.2.105. REGEXP_INSTR
4.2.106. REGEXP_REPLACE
4.2.107. REGEXP_SUBSTR
4.2.108. REGR_AVGX
4.2.109. REGR_AVGY
4.2.110. REGR_COUNT
4.2.111. REGR_INTERCEPT
4.2.112. REGR_R2
4.2.113. REGR_SLOPE
4.2.114. REGR_SXX
4.2.115. REGR_SXY
4.2.116. REGR_SYY
4.2.117. REMAINDER
4.2.118. REPLACE
4.2.119. REVERSE
4.2.120. ROUND(number)
4.2.121. ROUND(date)
4.2.122. ROWIDTOCHAR
4.2.123. ROW_NUMBER
4.2.124. RPAD
4.2.125. RTRIM
4.2.126. SESSIONTIMEZONE
4.2.127. SIGN
4.2.128. SIN
4.2.129. SINH
4.2.130. SKEW
4.2.131. SQRT
4.2.132. STDDEV
4.2.133. STDDEV_POP
4.2.134. STDDEV_SAMP
4.2.135. SUBSTR
4.2.136. SUM
4.2.137. SYS_CONNECT_BY_PATH
4.2.138. SYS_CONTEXT
4.2.139. SYS_EXTRACT_UTC
4.2.140. SYS_GUID
4.2.141. SYSDATE
4.2.142. SYSTIME
4.2.143. SYSTIMESTAMP
4.2.144. TAN
4.2.145. TANH
4.2.146. TO_CHAR(character)
4.2.147. TO_CHAR(datetime)
4.2.148. TO_CHAR(number)
4.2.149. TO_CLOB
4.2.150. TO_DATE
4.2.151. TO_DSINTERVAL
4.2.152. TO_LOB
4.2.153. TO_MULTI_BYTE
4.2.154. TO_NCHAR
4.2.155. TO_NUMBER
4.2.156. TO_SINGLE_BYTE
4.2.157. TO_TIME
4.2.158. TO_TIMESTAMP
4.2.159. TO_TIMESTAMP_TZ
4.2.160. TO_YMINTERVAL
4.2.161. TRANSLATE
4.2.162. TRIM
4.2.163. TRUNC(number)
4.2.164. TRUNC(date)
4.2.165. TZ_OFFSET
4.2.166. TZ_SHIFT
4.2.167. UID
4.2.168. UNISTR
4.2.169. UPDATEXML
4.2.170. UPPER
4.2.171. USER
4.2.172. USERENV
4.2.173. VAR_POP
4.2.174. VAR_SAMP
4.2.175. VARIANCE
4.2.176. VSIZE
4.2.177. XMLAGG
4.2.178. XMLCAST
4.2.179. XMLCOMMENT
4.2.180. XMLCONCAT
4.2.181. XMLELEMENT
4.2.182. XMLEXISTS
4.2.183. XMLFOREST
4.2.184. XMLPARSE
4.2.185. XMLPI
4.2.186. XMLQUERY
4.2.187. XMLSERIALIZE
4.2.188. XMLTABLE
4.2.189. XMLTRANSFORM

반응형
반응형
반응형
반응형

DB - Oracle : # to_char()의 'FM90' 의 의미

'9'는 해당 자리 숫자를 의미하고, 없을경우 공백으로 표시

'0'은 해당 자리 숫자를 의미하고, 없을경우 '0'으로 표시 

'FM'은 좌우 공백 제거

반응형
반응형

Oracle,  Dual 이란?  Dummy? 

 

듀얼은 본래 테이블로서, 데이터베이스 엔진은 DUAL을 SELECT FROM할 때 테이블 상의 디스크 입출력을 수행하였다.

이러한 디스크 입출력은 일반적으로 논리적인 입출력으로(물리적인 디스크 접근을 동반하지 않음) 디스크 블록들이 보통 메모리에 이미 캐시되어 있는 상태였다.

이로 말미암아 듀얼 테이블로의 논리적 입출력의 양이 매우 컸다.

10g 릴리즈 1을 기점으로 오라클 데이터베이스는 최적화되어, 데이터베이스는 듀얼 테이블이 실제로 존재하더라도 더 이상 듀얼 테이블에 물리적·논리적 입출력을 수행하지 않는다.

 

SELECT 1+1 FROM DUAL;
SELECT 1 FROM DUAL;
SELECT USER FROM DUAL;
select sysdate from dual;

ex) SELECT 시퀀스.NEXTVAL FROM DUAL;
ex) SELECT SYSDATE FROM DUAL;
ex) SELECT CURRENT_DATE FROM DUAL;
ex) Merge into 내부에서 사용
    MERGE INTO 테이블명  별칭
    USING 대상테이블/뷰  별칭
    ON 조인조건
    WHEN MATCHED THEN
      UPDATE SET
       컬럼1=값1
       컬럼2=값2
    WHEN NOT MATCHED THEN
      INSERT (컬럼1,컬럼2,...)
           VALUES(값1,값2,...);

 

 

반응형
반응형

Oracle SQL Developer 에서 출력시 그리드(Grid) 나오게 하는 것. 

 

F5로 실행시 출력시트에 그냥 스크립트로 나와서 보기에 불편하다. 

F9 또는 Ctrl + Enter 를 하면 출력시 그리드(Grid)로 나온다. 

select * from dual;
select sysdate from dual;

 

 

반응형

+ Recent posts