본문 바로가기

오라클

2.스칼라 함수 (단일행)

- 스칼라 함수 (단일행)


문자열 추출

   SUBSTR(char, m[,n])

EX1) SELECT SUBSTR('seoul korea', 7, 3) FROM dual ;  -- 7번째부터 3개추출(주위:오라클은 인덱스가 1부터)

EX2) SELECT SUBSTR('seoul korea', -5, 3) FROM dual ; -- 뒤에서 5번째부터 3개추출

EX3) SELECT SUBSTR('seoul korea', 7) FROM dual ;  -- 7번째부터 끝까지

 


SUBSTR과 WHERE의 결합

SELECT name, ssn, buseo

 FROM insa

 WHERE (SUBSTR(ssn,8,1)='1';

=> 설명 

insa 테이블에서 SELECT를 사용하여 보고싶은 컬럼을 선택하고

WHERE을 이요하여 ssn 컬럼에 조건을 주어서 출력결과를 한정시켰다. 



** 오라클은 자료형에 관대하며 형변환을 하지 않아도 숫자로 변환 가능한 경우 숫자와 연산하면 자동으로 숫자로 변환된다.

** 오라클은 리터럴(상수)이 아니면 대소문자를 구분하지 않는다.



- 문자열 길이

 LENGTh(문자열)

EX) SELECT LENGTH('대한민국')  결과 => 4



- 문자열 바이트 수

 LENGTHB(문자열)

EX) SELECT LENGTHB('대한민국')    결과 => 8



- 문자열의 위치를 반환

 INSTR(컬럼또는수식, '문자열' [,m][,n])

EX) SELECT INSTR('korea', 'e') FROM DUAL;    결과 => 4 (4번째에 e가 있다)



- 빈부분에 문자열 채우기

 LPAD(컬럼또는수식, n [, 문자열]) => 왼쪽으로 채운다

 RPAD(컬럼또는수식, n [, 문자열]) => 오른쪽으로 채운다. 

EX1) SELECT LPAD('korea', 12, '*') FROM DUAL; 결과 => *******korea

EX2) SELECT LPAD(basicpay/10000, 10, '*') FROM insa;    결과 => 급여를 만원단위로 나누고 왼쪽으로 *로 채운다.



- 문자열 치환

 REPLACE(text, search_string [,치환문자열])

       해당컬럼, 바꾸려는 문자,  

EX) SELECT name, buseo, REPLACE(buseo, '부', '팀') FROM insa;   =>  문자를 가운데 넣고



- 공백 제거

 RTRIM, LTRIM, TRIM

    SELECT   '우리나라    ' || '*',  RTRIM('우리나라    ') || '*' FROM  DUAL;

    SELECT   name, RTRIM(buseo, '부') || '팀' FROM insa; 

    SELECT   '*' || '    우리     ' || '*',   '*' || TRIM('    우리     ') || '*'  FROM DUAL;