본문 바로가기
개발/데이터베이스

(데이터베이스) 문자 내장함수

by kakk789 2022. 4. 28.

문자 내장함수

CHR ( 정수 ) 정수 아스키코드를 문자로 반환
CONCAT ('문자열1', '문자열2') 두 문자열 연결
INITCAP ('문자열') 단어의 첫 글자를 대문자로 변환
LOWER ('문자열') 문자열을 모두 소문자로 변환
UPPER ('문자열') 문자열을 모두 대문자로 변환
LPAD ('문자열', 정수형, '채울글자') 정수만큼 자리수에 문자열을 채우는데 왼쪽에 채울글자를 채워라
RPAD ('문자열', 정수형, '채울글자') 정수만큼 자리수에 문자열을 채우는데 오른쪽에 채울글자를 채워라
REPLACE('문자열1', '문자열2', '문자열3') '문자열1'에서 '문자열2'의 글자를 '문자열3'으로 바꿔라
TRIM (c FROM s) 양쪽 공백을 삭제
LTRIM (문자열1, 문자열2) 왼쪽 공백 제거
RTRIM (문자열1, 문자열2) 오른쪽 공백 제거
SUBSTR(문자열,시작위치,길이) 문자열의 시작위치에서 길이만큼 잘라서 반환
LENGTH (문자) 문자열의 길이를 반환
ASCII (값) 문자를 정수형으로 반환
instr ('문자열', '찾을 문자') 
instr ('문자열1', '문자열2', 숫자1)
- 문자열에 특정 문자열의 위치를 반환
- 문자열1로부터 숫자1인덱스 이후에 나오는 문자열 2의 위치

CHR

  • 정수에 해당하는 아스키 코드 반환 ( 65 -> 'A' )

CONCAT

  • 두 문자열을 합하여 반환

INITCAP

  • 단어의 첫글자를 대문자로 반환

lower

  • 소문자로 변환

UPPER

  • 대문자로 변환

TRIM

  • 좌우 공백 제거 (공백 좌우 3개씩 6개)ㅇ
  • length로 공백 제거 되었는지 표현하였음

LTRIM

  • 왼쪽 공백 제거 (공백 좌우 3개씩 6개)
  • length로 공백 제거 되었는지 표현하였음

RTRIM

  • 오른쪽 공백 제거 (공백 좌우 3개씩 6개)
  • length로 공백 제거 되었는지 표현하였음

length

  • 문자열의 길이를 반환하는 함수
  • length로 공백 제거 되었는지 표현하였음

ASCII

  • 문자의 정수형 값 반환

INSTR

  • 문자열에서 몇번째에 있는 문자인지 반환

예시1

예시2

이메일에서 우선 '@골뱅이'의 위치를 찾고 그 이후에 나오는 'dot(점 . )' 의 인덱스를 반환

SUBSTR

  • 문자열을 잘라내어 반환

예시1

이름의 첫글자를 반환

예시2 - 여성 서교동에사는 여성직원들의 정보를 출력

INSTR 함수로 주민번호 가운데 있는 '대시(-)'의 인덱스를 반환받고
SUBSTR 함수로 '대시(-)'의 인덱스부터 1글자 (뒷자리 첫번째)가 2 또는 4라면 여자
SELECT e.jumin, e.ename 사원이름 , m.ename 관리자이름, 
e.email 사원이메일, m.email 관리자이메일, e.dno, 
d.dname, (e.salary +e.COMM)*12 

FROM emp m, emp e, dept d

WHERE (SUBSTR(e.jumin, INSTR(e.jumin,'-')+1, 1) in ('2','4')) AND d.DLOC LIKE '%서교동%'
AND m.eno = e.mgr AND e.dno = d.dno ORDER by e.dno, e.ename;

REPLACE 

  • '문자열1'에서 '문자열2'의 글자를 '문자열3'으로 바꿔라

LPAD

  • 문자열을 자릿수 만큼 공간을 잡아 오른쪽에 정렬하여 출력하고 나머지 왼쪽 빈칸은 채울글자로 채웁니다.

RPAD

  • 문자열을 자릿수 만큼 공간을 잡아 왼쪽 정렬하여 출력하고 나머지 오른쪽 빈칸은 채울글자로 채웁니다.

예시1 - 이름의 첫 글자를 출력하여 나머지는 * 로 마스킹

SELECT RPAD(SUBSTR(ename,1,1),LENGTH(ename),'*') FROM emp;

예시2 -아래와 같이 출력하는데 주민번호는 마스킹 처리하라

select e.eno, e.ename, SUBSTR(e.email, 1, INSTR(e.email, '@') -1) id,
rpad(SUBSTR(e.jumin, 1, 8) , 14, '*') jumin,
LPAD(e.salary+e.comm , 10, 0 ) salary
FROM emp e, emp m 
WHERE e.mgr = m.eno AND
e.ename ='김한희'
ORDER BY e.salary + e.comm DESC, e.ename;

반응형

댓글