-대소문자 조작 함수
1-1.대소문자 조작 함수 - LOWER,UPPER,INITCAP(첫글자만 대문자 나머진 소문자)
SELECT LOWER('hello') FROM dual;
SELECT LOWER(ename) FROM emp;
SELECT UPPER('hello') FROM dual;
문장의 첫글자를 대문자로 변경, 그 다음은 소문자로
SELECT INITCAP('hello wORLD') FROm dual; --단어가 난잡하게 되어있어도 자동으로 정리된다.
-문자 조작함수
1-2.문자 조작함수
CONCAT(문자열1,문자열2) : 문자열1과 문자열2를 연결하여 하나의 문자열로 반환
SELECT CONCAT('Hello','Wolrd') FROM dual;
SELECT CONCAT(ename,job) FROM emp;
-SUBSTR
1-3
SUBSTR(대상문자열,인덱스,갯수) : 대상문자열에서 지정한 인덱스부터 문자열을 추출
[주의]인덱스가 0번부터가 아닌 1번부터 시작.
SELECT SUBSTR('Hello World',3) FROM dual; --3이기 때문에 e 다음인 l부터 시작된다.
SELECT SUBSTR('Hello World',3,3) FROM dual; -- 인덱스3부터 문자 3개 추출
SELECT SUBSTR('Hello World', -3) FROM dual; --뒤에서 3번째부터 끝까지 추출
SELECT SUBSTR('Hello World',-3,2) FROm dual;--뒤에서 3번째부터 2개만 추출
-LENGTH
1-4
LENGTH(대상문자열) : 문자열의 개수
SELECT LENGTH('Hello World') FROM dual;
SELECT LENGTH(ename) FROM emp;
-INSTR
1-5
INSTR(대상문자열,검색문자,검색 인덱스[해당위치부터 검색],반복횟수) : 검색문자의 위치값 검색
SELECT INSTR('Hello World', 'e') FROM dual;
검색 문자가 없을 경우 0을 반환한다.
SELECT INSTR('Hello World', 'E') FROM dual;
문자가 중복될 경우 앞에 있는 문자의 위치값을 반환하는것이 default 값이다.
SELECT INSTR('Hello World','o') FROM dual;
대상문자열,검색문자,검색인덱스[해당위치부터 검색]
SELECT INSTR('Hello World','o',6) FROM dual; --인덱스 6부터 검색을 시작함으로 뒤에 o의 위치가 6 뒤에 있기 때문에 8이 출력된다.
대상문자열,검색문자,검색인덱스,반복횟수[대상문자열 전체를 여러번 검색한다는 의미가 아니라 1번 검색으로 o를 찾으면 지정한 횟수만큼 그 뒤의 문자를 검색한다는 의미]
SELECT INSTR('Hello World','o',1,2) FROM dual;--인덱스 1부터 시작하였으므로 5위치인 o를 찾았다. 그치만 2회 횟수기 때문에 아직 1번 남았으므로 찾은 위치인 5부터 o를 한 번 더 찾는 것이다.
-LPAD,RPAD
1-6
LPAD(대상문자열,총길이,문자) : 지정한 길이에 문자열을 출력하는데 공백은 왼쪽에 지정한 문자로 채움.
SELECT LPAD('Hello',10,'*') FROM dual;
1-7
RPAD(대상문자열,총길이,문자) : 지정한 길이에 문자열을 출력하는데 공백은 오른쪽에 지정한 문자로 채움
SELECT RPAD('Hello',10,'*') FROM dual;
-TRIM
1-8
TRIM : 문자열에서 공백이나 특정 문자를 제거한 다음 값을 반환
방향 : 왼쪽 -> LEADING , 오른쪽 -> TRAILING , 양쪽 -> BOTH <- default값
SELECT TRIM(LEADING 'h' FROM 'habchh') FROM dual; --왼쪽에 있는 h들을 제거
SELECT TRIM(BOTH 'h' FROM 'habchh') FROM dual;--양쪽 h를 제거
LTRIM: 문자열 왼쪽에서 공백이나 특정문자를 제거한 다음 값을 반환
RTRIM: 문자열 오른쪽에서 공백이나 특정문자를 제거한 다음 값을 반환
-REPLACE ,함수중첩
1-9
REPLACE(대상문자열,OLD,NEW) :대상문자열에서 OLD문자를 NEW문자로 대체
SELECT REPLACE ('010.1234.5678','.','-') FROM dual;
함수 중첩
SELECT ename, LOWER(SUBSTR(ename,1,3)) FROM emp;
실습문제
[실습 문제]
1.업무(job)을 첫글자는 대문자 나머지는 소문자로 출력하시오.
SELECT INITCAP(job) FROM emp;
2.사원이름 중 A가 포함된 사원이름을 구하고 그 이름 중 앞에서 3자만 추출하여 출력하시오.
SELECT SUBSTR(ename,1,3) FROM emp WHERE ename LIKE '%A%';
3.이름의 세번째 문자가 A인 모든 사원의 이름을 표시하시오.
SELECT ename FROM emp WHERE ename LIKE '__A%';
SELECT ename FROM emp WHERE SUBSTR(ename,3,1) = 'A';
4.이름이 J,A 또는 M으로 시작하는 모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름의 길이를 표시하시오(열 레이블은 name과 length로 표시)
SELECT INITCAP(ename) "name",LENGTH(ename)"length" FROM emp
WHERE ename LIKE 'J%'OR ename LIKE'A%' OR ename LIKE 'M%' ;
SELECT INITCAP(ename) "name",LENGTH(ename)"length" FROM emp
WHERE SUBSTR(ename,1,1) IN ('J','A','M');
'쌍용교육(JAVA) > SQL' 카테고리의 다른 글
쌍용교육 -SQL 수업 17~18일차 날짜함수-(1.MONTHS_BETWEEN,2.NEXT_DAY3.EXTRACT,4.실습문제) (0) | 2024.04.12 |
---|---|
쌍용교육 -SQL 수업 17일차 숫자함수-(1.CEIL,FLOOR,ROUND,2.TRUNC3.MOD) (0) | 2024.04.12 |
쌍용교육 -SQL 수업 17일차(LIKE,NULL조건 사용,(AND,OR,NOT논리연산자),실습문제,ORDER BY 절,실습문제) (0) | 2024.04.12 |
쌍용교육 -SQL 수업 16일차 (WHERE절,BETWEEN…AND…,IN(),실습문제) (0) | 2024.04.12 |
쌍용교육 -SQL 수업 16일차 (SELECT문,DUAL,연산,ALIAS,연결연산자,DISTINCT중복행 삭제,실습문제) (0) | 2024.04.12 |