참고
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는 사원명, 부서코드, 직책코드, 급여
3. 상품테이블(PROD)에서 분류가 전자제품(P102)에 속한 상품의 수를 출력하시오
- java에서는 주로 코드를 소문자로 짜기때문에 일어날 수 있는 일
4. 사원테이블의 사원이름을 모두 소문자로 변환하여 저장하시오
2) UPPER(c)
- c에 저장된 문자열의 모든 문자를 대문자로 변환
예시
1. 사원테이블의 사원이름을 모두 대문자로 변환하여 저장하시오
3) INITCAP(c)
- 각 단어의 첫 글자만 대문자로 변환
- 이름 표기법에 주로 사용
예시
사원테이블의 이름을 첫 글자만 대문자로 변환하여 저장하시오
2. CONCAT(c1,c2)
- c1문자열과 c2문자열을 결합하여 반환
- '||' 연산자와 같은 기능
- '||' 보다 사용이 어려워 잘 쓰지않음
예시
회원테이블에서 마일리지가 3000이상인 회원정보를 조회하시오
- Alias는 회원명, 주민번호, 마일리지, 직업
- 단, 주민번호는 XXXXXX-XXXXXXX 형식으로 출력하되 CONCAT을 사용할 것
3. SUBSTR(c, pos[,len])
- 자바: pos 시작, len 끝나는 위치 오라클: len 갯수
- 주어진 문자열 c에서 pos위치에서 len갯수 만큼의 문자열을 추출하여 반환
- pos 값이 0인 경우 1로 취급
- len이 생략되면 pos 위치 이후의 모든 문자열을 반환
- 가장 많이 사용되는 문자열 함수
예시
회원테이블에서 주민등록번호를 이용하여 여성회원들의 나이를 출력하시오.
- Alias는 회원명, 주민번호, 나이, 마일리지
문제
사원테이블에서 근속년수 15년 이상인 사원들에게 특별 보너스를 지급하려한다
- 보너스는 급여 * (근속년수/100)이며 소숫점 첫째자리에서 반올림한다.
- 지급액=급여+보너스
- Alias는 사원명, 부서코드, 입사일, 근속년수, 보너스, 급여, 지급액이다.
TO_NUMBER(SUBSTR(HIRE_DATE,1,4)) 사용
EXTRACT(YEAR FROM HIRE_DATE) 사용
조건절에서 이미 범위를 지정해줬기때문에 NULL처리 함수를 사용하지 않아도 됨
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)으로 변경하시오
▼
1-2. 거래처 테이블의 거래처명의 데이터 타입을 CHAR(40)으로 변경하시오.
2. 거래처 테이블에서 거래처 기본주소 중 대전에 있는 거래처를 검색하여 '대전' 문자열을 제거하시오
2-1. 번외
5. LPAD(c,n,expr), RPAD(c,n,expr)
- 주어진 문자열의 왼쪽(LPAD) 또는 오른쪽(RPAD)에 특정문자열을 삽입할 때 사용
- c 문자열에 왼쪽(LPAD)에 n자리만큼 expr문자열을 삽입하여 c를 반환
- expr이 생략되면 공백이 삽입
예시
1. LPAD
2. RPAD
6. REPLACE(c, ser_c, rep_c)
- 문자열 c 에서 문자열 'ser_c'를 찾아서 문자열'rep_c'로 대치시킴
- 단어 내부의 공백제거에 주로 사용
예시
1.
2. 거래처 테이블의 거래처명의 데이터 타입을 VARCHAR2(40)으로 변경하시오
- 위에서 CHAR(40)으로 바꾸면서 공백이 그대로 40만큼 채워졌다는 걸 까먹지 말것
7. INSTR(c,substr,pos[,occur])
- 문자열 c 에서 substr문자열을 찾아 그 문자열의 위치 값을 반환
- pos 시작위치값으로 default는 1임
- occur는 반복 횟수를 정의
- occur 생략되면 substr 찾아서 몇번째 있는지 확인
8. LENGTH(c), LENGTHB(c)
- 문자열 c의 길이 또는 byte수를 반환
- (참고) B:byte b:bit