10/20 25-3 오라클 주요 내장 함수 (문자열 관련)
자바에서 주요 메소드 정리한 것 처럼 오라클도 내장함수를 정리할거
윽 내 내장..... 에 그 내장 아님... 아... 수업시간에 내장드립 엄청 치고싶었는데.... 속으로 열심히 드립치고 놀았음 후후후
[문자관련 함수들]
-NVL(컬럼명,NULL인 경우 대체할 값) : 해당 컬럼에서 null 인 값이 있으면 대체할 값으로 변경
-NVL2(컬럼명,"대체값1(NULL 아닐때)","대체값2(NULL일때)") :위에거랑 비슷한데 null이 아닐 때도 변경함
-LOWER('문자열'):영문자를 소문자로 변환
SELECT LOWER('ORACLE') FROM DUAL ;
-UPPER('문자열'):영문자를 대문자로 변환
SELECT UPPER('oracle') FROM DUAL ;
-INITCAP('문자열'): 첫 영문자를 대문자로 변환
SELECT INITCAP('oracle') FROM DUAL;
-CONCAT('문자열','문자열'):문자열 연결 근데 이거보다 그냥 || 씀 왜냐면 이건 2 연결할 때만 쓸 수 있음.
-LENGTH():문자열 길이반환 이건 자바랑 똑같넹
SELECT LENGTH('오라클') FROM DUAL; => 3출력
-lengthb():문자열 길이를 바이트로 (한글은 3바이트 차지)
SELECT LENGTHB('오라클') FROM DUAL; =>9출력
-LPAD('문자열', 전체 자리수 ,'채울 문자열') : 좌측을 지정한 값으로 채운다
SELECT LPAD('HELLO',10,'X') FROM DUAL => XXXXXHELLO
SELECT LPAD('9',2,'0') FROM DUAL =>09
-RPAD('문자열', 전체 자리수 ,'채울 문자열'):우측을 지정한 값으로 채운다
SELECT LPAD('HELLO',10,'X') FROM DUAL+>HELLOXXXXX
SELECT LPAD('9',2,'0') FROM DUAL +>90
------- LPAD랑 RPAD는 단독으로 쓰이기 보단 정보 숨기는기능으로 다른 함수랑 엮어서 많이 사용한다!!!!
그리고 헷깔리지 않게 잘 이해해!! ( 건더기, 총 그릇 , 국물 ) == 미역국 요런 비유??
-SUBSTR('문자열',시작인덱스,길이):문자열에서 시작인덱스부터 길이 만큼 가져옴,인덱스는 1부터 시작
SELECT SUBSTR('123456789',3,3) FROM DUAL; =>345
SUBSTR 랑 RPAD랑 아주 많이 쓰임 잘 익혀야 한다!! 걍 아주 외울정도로 달달달달다달다달달달!!
-INSTR('문자열','찾을 문자열'): 찾은 문자열의 인덱스 반환. 인덱스는 1부터 시작, 자바의 INDEXOF 랑 같음
찾는 문자열 없으면 0 반환
SELECT INSTR('ABCDEFG','DE') FROM DUAL =>4
(1)SELECT * FROM DEPT WHERE instr(LOWER(DNAME),'e') !=0 는
(2)SELECT * FROM DEPT WHERE LOWER(DNAME) like '%e%'와 결과가 같으나 쿼리속도면에서 (1)이 훨씬 성능이 우수하다.
그림에서 마지막꺼 추가설명
WHERE SUBSTR(UPPER(LSAT_NAME),LENGTH(LAST_NAME),1)='T'
( '가져올 문자열' 중에서 , 문자열이 총 길이 =마지막글자 인덱스번호 , 그 마지막글자 하나만!) 이거군
-REPLACE('문자열','바꿀 문자열','바뀔 문자열'): 특정 문자열을 다른 문자열로 대체
SELECT REPLACE('HELLO WORLD','HELLO','JAVA') FROM DUAL =>JAVA WORLD
-TO_CHAR(): = TOSTRING 과 같은의미 숫자형을 문자형으로 변환 !!!
TO_CHAR(숫자 혹은 날짜)
TO_CHAR(숫자 혹은 날짜,숫자형식 포맷 문자열 혹은 날짜형식 포맷 문자열)
SELECT TO_CHAR(123,'0999') FROM DUAL =>0123 => 자리수 맞출 때 주로 사용
SELECT TO_CHAR(123,'9999') FROM DUAL => 123 => '9999' 9면 여백을 주고, '0999' 0이면 앞에 0을 반환 하는 군
SELECT TO_CHAR(1234,'$999,999.99') FROM DUAL => $1,234.00 $앞에다가 여백을 줌
SELECT TO_CHAR(1234,'$999,999.00') FROM DUAL => $1,234.00 소수점은 값이 없으면 0이나 9나 다 0으로 출력됨
SELECT TO_CHAR(1234,'L999,999') FROM DUAL => \1,234
SELECT TO_CHAR(1234,'l999,999') FROM DUAL => \1,234
---숫자가 너무 크면 #처리로 해버림
-날짜형을 문자 형으로 변환 (필요한것만 )
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') FROM DUAL
******yyyy"월"mm"년"dd"일" :한글로 년월일 표시시 포맷형식에 ""로 한글을 감싼다.
예]SELECT TO_CHAR(SYSDATE,'YYYY"년"MM"월"DD"일" HH"시"MI"분"SS"초"') FROM DUAL
SELECT TO_CHAR(SYSDATE,'day') FROM DUAL =>목요일
SELECT TO_CHAR(SYSDATE,'dy') FROM DUAL =>목
SELECT TO_CHAR(SYSDATE,'HH AM') FROM DUAL=> 06 오전 혹은 오후
SELECT TO_CHAR(SYSDATE,'HH PM') FROM DUAL=> 06 오전 혹은 오후 AM/PM 둘 중 아무거나 써도 됨
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL=>0~23시 형태의 시간 반환
SELECT TO_CHAR(TO_DATE('2013/1/1'),'DDD') FROM DUAL=>001 해당년도 1월1일부터 며칠 째인지 반환
-TO_NUMBER( ):문자형을 숫자형으로 변환
SELECT TO_NUMBER('123') + TO_NUMBER('456') FROM DUAL +>579
혹은 SELECT '123' + '456' FROM DUAL
-TRIM( ):양쪽 공백 제거