SELECT LENGTH('오라클'), LENGTHB('오라클')
FROM DUAL;
LENGTH : 글자수
LENGTHB : 바이트수
표현법
* INSTR : 문자열로부터 특정 문자의 시작 위치를 반환 컬럼
INSTR(컬럼 | '문자열', '찾고자하는 문자')[, 찾을 위치의 시작값, 순번1]
SELECT INSTR ('AABAACAABBAA', 'B') -- 앞쪽에 있는 첫번째 B의 위치 : 3
FROM DUAL;
SELECT INSTR('AABAACAABBAA','B',-1)
FROM DUAL;
-1 : 뒤에서부터 찾음
SELECT EMAIL, INSTR(email, '_', 1,1)"_ 위치", INSTR(email, '@', 1,1)"@ 위치"
FROM employee;
* SUBSTR : 문자열에서 특정 문자열을 추출해서 반환
*SELECT SUBSTR('ORACLE SQL DEVELOPER', 10)
L 추출
SELECT SUBSTR('ORACLE SQL DEVELOPER', 8, 3) FROM DUAL;
- > 8번째 위치부터 3글자만 추출
SELECT EMP_NAME, EMP_NO
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN ('1','3')
ORDER BY EMP_NAME;
-- 사원 정보 중 사원명, 이메일, 아이디 조회
-- [1] 이메일에서 '@'의 위치를 찾고 => INSTR 함수 사용
-- [2] 이메일의 컬럼의 값에서 1번째 위치부터 '@'위치(1에서 확인)전까지 추출
SELECT EMP_NAME, email, SUBSTR(email, '1',INSTR(EMAIL, '@') -1)
FROM EMPLOYEE;
LPAD / RPAD
: 문자열을 조회할 때 통일감있게 조회하고자 할 때 사용
: 문자열에 덧 붙이고자하는 문자를 왼쪽 또는 오른쪽에서 붙여서
최종 길이만큼 문자열 반환
LPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
RPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
*덧붙일 문자 생략 시 기본값으로 공백으로 채워짐
SELECT EMP_NAME,RPAD(SUBSTR(EMP_NO, 1,8),14,'*')
FROM EMPLOYEE;
*LTRIM/RTRIM : 문자열에서 특정 문자를 제거한 후 나머지를 반환
*TRIM : 문자열 앞/뒤/양쪽에 있는 지정한 문자들을 제거한 후 너머지 값을 반환
[표현법]
TRIM([LEADING | TRAILING | BOTH] 제거할 문자 FROM 문자열|컬럼)
* 제거할 문자 생략 시 공백 제거
* 기본 옵션은 BOTH(양쪽)
SELECT TRIM(LEADING 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
SELECT TRIM(TRAILING 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
-- LEADING LTRIM과 유사하다.
-- TRAILING RTRIM과 유사하다.
-- BOTH TRIM과 유사하다.
* SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
/ UPPER / INITCAP - 띄어쓰기 기준으로
- LOWER : 문자열을 모두 소문자로 변경하여 반환
- UPPER : 문자열을 모두 대문자로 변경하여 반환
- INITCAP : 띄어쓰기 기준으로 첫 글자마자
*/
-- "I Think so I am"
SELECT LOWER('I Think so I am') FROM DUAL;
SELECT UPPER('I Think so I am') FROM DUAL;
SELECT INITCAP('I Think so i am') FROM DUAL;
* SELECT TRIM(BOTH 'L' FROM 'LLLLLHLILLLLLLL') 값 FROM DUAL;
/ UPPER / INITCAP - 띄어쓰기 기준으로
- LOWER : 문자열을 모두 소문자로 변경하여 반환
- UPPER : 문자열을 모두 대문자로 변경하여 반환
- INITCAP : 띄어쓰기 기준으로 첫 글자마자 대소문자 변환
*/
-- "I Think so I am"
SELECT LOWER('I Think so I am') FROM DUAL;
SELECT UPPER('I Think so I am') FROM DUAL;
SELECT INITCAP('I Think so i am') FROM DUAL;
* REPLACE :특정 문자열에서 특정 부분을 다른 부분으로 교체하여 문자열 반환
[표현법]
REPLACE(문자열, 찾을 문자열, 변경할 문자열)
*/
SELECT * FROM employee;
SELECT * FROM employee;
-- 사원 테이블에서 이메일 정보 중 'or.kr' 부분을 "kh.or.kr" 값을 변경하여 조회
SELECT REPLACE(EMAIL, '@or.kr' ,'@gmail.com') 이메일
FROM employee;
숫자 관련 함수 :
ABC : SELECT ABS(-10) FROM DUAL;
SELECT MOD(10,3) FROM DUAL;
SELECT MOD(10.9,3) FROM DUAL;
SELECT MOD(10.9,3.2) FROM DUAL;
ROUND : 반올림한 값을 구해주는 함수
'ORACLE SQL' 카테고리의 다른 글
SQL 관련 문제 풀이 (0) | 2024.07.19 |
---|---|
SQL 정리 연산자 모음 (0) | 2024.07.19 |
SQL 4일차 형변환 (0) | 2024.07.19 |
SQL 2일차 (0) | 2024.07.17 |
SQL 내용 정리 1일차 완전 기초정리 (0) | 2024.07.16 |