데이터베이스 구조 (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;
: **동
**자 (이하생략)
: 이름의 앞 두글자를 **로 치환
'Database > MySQL' 카테고리의 다른 글
SQL - JOIN의 종류 (inner join, outer join) (0) | 2020.12.15 |
---|---|
SQL - 복수행 함수 (0) | 2020.12.15 |
SQL - 단일행 함수 (3) : 일반 함수 (0) | 2020.12.14 |
SQL - 단일행 함수 (2) : 숫자 함수, 날짜 함수, 형변환 함수 (0) | 2020.12.14 |
SQL - 데이터와 select (0) | 2020.12.14 |