320x100
320x100

 

데이터베이스 구조 (humanlist)

name

age

gender

job

홍길동

21

M

soldier

김춘자

33

F

CEO

방태순

18

F

student

윤호상

23

M

nurse

장지태

27

M

doctor

 

 

단일행 함수

- 복수개의 데이터가 존재할때 한개의 행을 처리하는 함수

- 종류 : 문자 함수, 숫자 함수, 날짜 함수, 변환 함수 (묵시적 데이터형 변환, 명시적 데이터형 변환), 일반 함수

- 문자 함수

: initcap (첫 글자만 대문자로 변환)

: lower (전부 소문자로 변환) / upper (전부 대문자로 변환)

: length (문자열의 길이 값 출력) / legnthb (문자열 길이의 바이트 값 출력)

: concat (두 문자열을 결합하여 출력, ||과 동일)

: substr (특정 문자만 출력) / substrb (특정 문자의 바이트 값 출력)

: instr (특정 문자의 위치 출력) / instrb (특정 문자 위치의 바이트 값 출력)

: lpad (문자열 왼쪽에 특정 문자 추가) / rpad (문자열 오른쪽에 특정 문자 추가)

: ltrim (문자열 왼쪽의 특정 문자 제거) / rtrim (문자열 오른쪽의 특정 문자 제거)

: replace (문자열 치환)

: regexp_replace (문자열의 특정 패턴에 부합하는 문자열 치환)

: regexp_instr (문자열의 특정 패턴의 시작 위치 출력)

: regexp_substr (문자열의 특정 패턴을 출력)

: regexp_like (문자열의 특정 패턴을 출력)

: regexp_count (문자열의 특정 패턴 횟수 출력)

 

 

initcap() <첫 글자만 대문자로 변환)>

- inicap(속성 or 문자열)

- select name, initcap(job) "이닛캡" from human_list;

: 홍길동 Soldier (이하생략)

- 맨 앞글자 외의 글자는 모두 소문자로 변환 됨

 

 

lower() / upper() <문장 전체를 대소문자로 변환>

- lower(속성 or 문자열) / upper(속성 or 문자열)

- select upper(job) from human_list;

: SOLDIER (이하생략)

 

 

length() / lengthb() <문자열의 길이 값 혹은 길이의 바이트 값 출력>

- length(속성 or 문자열) / length(속성 or 문자열)

- select length(job), length('comjeongca') from human_list;

: 7 10 (이하생략)

- select lengthb(name), lengthb('comjeongca') from human_list;

: 6 10 (이하생략)

: 한글의 경우 한글자당 2바이트이기 때문에 lengthb에서는 6, length에서는 3출력

 

 

concat() <문자열1과 문자열2를 병합>

- concat(속성 or 문자열1, 속성 or 문자열2)

- select concat(name, age) from human_list;

: 홍길동21 (이하생략)

 

 

substr() <특정 문자만 출력> / substrb() <특정문자만 출력 - 글자수가 바이트 기준>

- substr(속성 or 문자열, 시작위치, 글자수)

- 시작 위치의 경우 -로 설정하면 오른쪽 기준으로 시작점이 지정됨

- select name, substr(job, 2, 4) from human_list;

: 홍길동 oldi (이하생략)

- select name, substr(job, -2, 4) from human_list;

: 홍길동 er (이하생략)

=> soldier에서 2번째 글자 o부터 4글자 출력

=> soldier에서 오른쪽에서 두번째 글자 e부터 4글자 출력 (글자가 부족하면 안나옴)

 

 

 

instr() <특정 문자의 위치 출력> / instrb() <특정 문자의 위치를 바이트 값으로 출력>

- instr(속성 or 문자열, 찾을 글자, 검사의 시작위치, 찾을 글자의 위치)

- select instr('A-B-C-D', '-', 1, 3) from human_list;

: A부터 검사하고 나오는 3번째 -의 위치 출력

: 결과는 6 (A-B-C-D의 -이 3번 나오는데 그중 3번째 -의 위치)

- select instr('A-B-C-D', '-', 3, 1) from human_list;

: B부터 검사하고 1번째 -의 위치 출력

: 결과는 4

 

 

lpad() <문자열 왼쪽에 특정 문자 추가> / rpad() <문자열 오른쪽에 특정 문자 추가>

- lpad(속성 or 문자열, 문자열 전체 자리수, '채울문자')

- select name, lpad(name,10, '*') from human_list;

: *******홍길동 (이하생략)

- select lpad(job, 9, '12345689') from human_list;

: 12soldier

123456CEO (이하생략)

- select rpad(job, 9, substr('123456789', 1, lengthb(job)+1)) from human_list;

: soldier89

CEO456789 (이하생략)

 

 

ltrim() <문자열 왼쪽의 특정 문자 제거> / rtrim() <문자열 오른쪽의 특정 문자 제거>

- ltrim(속성 or 문자열, '제거할 문자')

- select ltrim(job, 'o') from human_list;

: soldier

=> ltrim : o로 시작하는 문자 제거, rtrim : o로 끝나는 문자 제거

 

 

replace() <문자열의 일부를 특정 문자로 치환>

- replace(속성 or 문자열, '문자1', '문자2')

- select replace('the Perfect load of DB_master', 'a', '**') from human_list;

: the Perfect lo**d of DB_m**ster

- select replace(name, substr(name,1,2), '**') from human_list;

: **동

**자 (이하생략)

: 이름의 앞 두글자를 **로 치환

 

 

 

 

 

 

300x250
728x90