참고
2020-08-13-02)문자열함수.sql
2020-08-14-01)문자열함수2.sql
1. INITCAP, LOWER, UPPER
1) LOWER(c)
- 주어진 c 문자열의 모든 문자를 소문자로 변환하여 반환
- 주로 비교문에서 사용
예시
1. 사원테이블에서 사원의 이름과 이메일 값을 문자로 변환하여 출력하시오
2. 사원테이블에서 LAST NAME이 'G'로 시작하는 사원을 조회하시오
- 단 Alias는 사원명, 부서코드, 직책코드, 급여
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fbec1ab18-3c99-4ff0-87e9-9d744f90e8d8%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F3bd13919-3c58-4177-ad1f-da53c4871d63%2Fimage.png)
3. 상품테이블(PROD)에서 분류가 전자제품(P102)에 속한 상품의 수를 출력하시오
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F3699b119-ea4b-4832-b0cd-512edf1eb375%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F8e6abb4f-ec64-4306-82eb-09572ccbec98%2Fimage.png)
- java에서는 주로 코드를 소문자로 짜기때문에 일어날 수 있는 일
4. 사원테이블의 사원이름을 모두 소문자로 변환하여 저장하시오
2) UPPER(c)
- c에 저장된 문자열의 모든 문자를 대문자로 변환
예시
1. 사원테이블의 사원이름을 모두 대문자로 변환하여 저장하시오
3) INITCAP(c)
- 각 단어의 첫 글자만 대문자로 변환
- 이름 표기법에 주로 사용
예시
사원테이블의 이름을 첫 글자만 대문자로 변환하여 저장하시오
2. CONCAT(c1,c2)
- c1문자열과 c2문자열을 결합하여 반환
- '||' 연산자와 같은 기능
- '||' 보다 사용이 어려워 잘 쓰지않음
예시
회원테이블에서 마일리지가 3000이상인 회원정보를 조회하시오
- Alias는 회원명, 주민번호, 마일리지, 직업
- 단, 주민번호는 XXXXXX-XXXXXXX 형식으로 출력하되 CONCAT을 사용할 것
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fae8c94a1-3efc-4c75-a790-c11b1610a9df%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fa74bc988-0020-4cd4-8d73-0b5660d1d6b5%2Fimage.png)
3. SUBSTR(c, pos[,len])
- 자바: pos 시작, len 끝나는 위치 오라클: len 갯수
- 주어진 문자열 c에서 pos위치에서 len갯수 만큼의 문자열을 추출하여 반환
- pos 값이 0인 경우 1로 취급
- len이 생략되면 pos 위치 이후의 모든 문자열을 반환
- 가장 많이 사용되는 문자열 함수
예시
회원테이블에서 주민등록번호를 이용하여 여성회원들의 나이를 출력하시오.
- Alias는 회원명, 주민번호, 나이, 마일리지
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fe2288eb1-e8f9-4514-b39b-74a111f346d8%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F9bf3f06b-ea5b-485a-8ad2-f5690569235c%2Fimage.png)
문제
사원테이블에서 근속년수 15년 이상인 사원들에게 특별 보너스를 지급하려한다
- 보너스는 급여 * (근속년수/100)이며 소숫점 첫째자리에서 반올림한다.
- 지급액=급여+보너스
- Alias는 사원명, 부서코드, 입사일, 근속년수, 보너스, 급여, 지급액이다.
TO_NUMBER(SUBSTR(HIRE_DATE,1,4)) 사용
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Ff51f5644-1629-45a0-9ea9-981cbc3c0ec1%2Fimage.png)
EXTRACT(YEAR FROM HIRE_DATE) 사용
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F594736a8-760b-472f-9115-ac0d4bfb8ecc%2Fimage.png)
조건절에서 이미 범위를 지정해줬기때문에 NULL처리 함수를 사용하지 않아도 됨
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fcb2979fa-e2d9-46e8-9230-b8eb81189664%2Fimage.png)
4. LTRIM, RTRIM, TRIM
- LTRIM(c [,set]), RTRIM(c [,SET]), TRIM(c)
- 무효의 공백을 제거하는 함수
- LTRIM은 왼쪽에 존재하는 무효의 공백제거
- RTRIM은 오른쪽에 존재하는 무효의 공백제거
- LTRIM은 양쪽에 존재하는 무효의 공백제거
- 주어진 문자열 c에서 set으로 지정된 문자열을 왼쪽(LTRIM), 오른쪽(RTRIM) 찾아 제거
- set이 생략되면 set은 공백을 의미함.
- 단어 내부에 있는 공백은 제거할 수 없음 -> 다른 함수 사용
- 원래는 특정 문자열을 제거하는 함수지만 공백 제거하는 용도로 쓰여짐
- VARCHAR2는 남는 자리 알아서 없어지지만 CHAR는 공백으로 채워짐
- CHAR: 숫자가 문자로 변환될때 오른쪽 정렬이 되어서 왼쪽에 공백생길때 사용됨
예시
1-1. 거래처 테이블의 거래처명의 데이터 타입을 CHAR(40)으로 변경하시오
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F37cac66d-c2fc-4330-a59e-208842fbbf1e%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F14276c00-b635-47c7-b82b-9914c33ac78f%2Fimage.png)
▼
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F000c883c-6b32-46cc-9fdd-5dcd79157456%2Fimage.png)
1-2. 거래처 테이블의 거래처명의 데이터 타입을 CHAR(40)으로 변경하시오.
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F2889cd12-b5ff-480d-9e67-edd7ff1f81e9%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F33660e31-6e9e-4424-bc17-3b30bb3bfd3b%2Fimage.png)
2. 거래처 테이블에서 거래처 기본주소 중 대전에 있는 거래처를 검색하여 '대전' 문자열을 제거하시오
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fc13593e7-0b90-4a96-b69b-a02b377f4f8b%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fd198c5f7-9f9f-49d2-a5cf-1ff805903d58%2Fimage.png)
2-1. 번외
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fb3ae8a4d-d388-40fd-bd4c-3950f0a16cdc%2Fimage.png)
5. LPAD(c,n,expr), RPAD(c,n,expr)
- 주어진 문자열의 왼쪽(LPAD) 또는 오른쪽(RPAD)에 특정문자열을 삽입할 때 사용
- c 문자열에 왼쪽(LPAD)에 n자리만큼 expr문자열을 삽입하여 c를 반환
- expr이 생략되면 공백이 삽입
예시
1. LPAD
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F4f18ae65-c183-4828-a3e6-41644beba278%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F699274ff-0fbc-4a1c-a896-535aebe2992a%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fa95025b4-04c6-4311-ad42-50548b0aa225%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F97e0e089-6477-4145-96ca-de1146937f6f%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F14426221-e51d-4b12-8802-8569016c0be6%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F167fe477-1f9e-4a7e-9918-6fd860c17307%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fd61d69d8-e901-4001-af11-922ac16d81a7%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F3f4a3104-341d-4747-8502-f8b440b6f916%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F6da71ecf-3156-4001-a055-051bc96b84fb%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F55c3080f-6697-4ebd-8cdd-2c0749e83cb6%2Fimage.png)
2. RPAD
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fa3db5f85-0cfe-407e-9f9e-c7b9a3ab89c9%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F86eb4d99-cc32-49a2-a022-ef3b2be485b0%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fb0c10424-8d67-4584-b273-2f5c3280da10%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fe201c681-1d4d-4508-97ad-9b75fbe17cd0%2Fimage.png)
6. REPLACE(c, ser_c, rep_c)
- 문자열 c 에서 문자열 'ser_c'를 찾아서 문자열'rep_c'로 대치시킴
- 단어 내부의 공백제거에 주로 사용
예시
1.
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fe51032c7-fcd9-4aac-ad53-1debf481c288%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2Fb93815e1-70b2-45af-9170-a05cd714dca1%2Fimage.png)
2. 거래처 테이블의 거래처명의 데이터 타입을 VARCHAR2(40)으로 변경하시오
- 위에서 CHAR(40)으로 바꾸면서 공백이 그대로 40만큼 채워졌다는 걸 까먹지 말것
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F4a23b0e2-2e42-4164-871f-7b421c6ade0e%2Fimage.png)
7. INSTR(c,substr,pos[,occur])
- 문자열 c 에서 substr문자열을 찾아 그 문자열의 위치 값을 반환
- pos 시작위치값으로 default는 1임
- occur는 반복 횟수를 정의
- occur 생략되면 substr 찾아서 몇번째 있는지 확인
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F89d53bd2-1225-4e01-9bd2-b6074f9da9cf%2Fimage.png)
![](https://velog.velcdn.com/images%2Fgodkimchichi%2Fpost%2F3b89fcd1-ce9c-4d58-b39d-3ca571054dcc%2Fimage.png)
8. LENGTH(c), LENGTHB(c)
- 문자열 c의 길이 또는 byte수를 반환
- (참고) B:byte b:bit