위로
아래
ASCII()
문자를 아스키코드로 반환
--질문 문자 Q를 아스키코드값으로 반환
SELECT ascii('Q')
FROM dual;
INSTR()
정의된 문장에서 지정된 위치에 존재하는 문자의 위치값을 찾아준다
--질문 CORPORATE FLOOR 문장에서 3번째 칸부터 시작해서 2번째로 나오는 OR의 위치
SELECT instr('CORPORATE FLOOR','OR',3,2)
FROM dual;
lengthb()
정의된 문장의 길이를 바이트로 반환
(한글은 한 글자에 3바이트)
--질문 가나다라마바사의 문장 길이를 바이트로 구하라
SELECT lengthb('가나다라마바사')
FROM dual;
greatest()
정의된 단어 중에서 가장 높은 값을 찾아준다
--질문 HARRY, HARIOT, HALORD 중 가장 높은 단어는?
SELECT greatest('HARRY','HARIOT','HALORD')
FROM dual;
least()
정의된 단어 중에서 가장 낮은 값을 찾아준다
--질문 HARRY, HARIOT, HALORD 중 가장 낮은 단어는?
SELECT least('HARRY','HARIOT','HALORD')
FROM dual;
nvl()
nvl(null의 대상이 되는 필드, 만약에 null이면 채울 값)
--질문) tmep 테이블에서 hobby가 null인 사람 모두 hobby를 '없음'이라고 치환하여 가져오고 나머지는 그대로 값을 읽어오고 싶다.
SELECT emp_name, nvl(hobby,'없음') AS hobby FROM temp;
nvl2()
null인 경우에 대체하는 값과 null이 아닌 경우에 대체할 값을 지정
--질문 null인 값은 0으로 대체하고, null이 아닌 값은 comm*1.1을 계산하여 포함
SELECT empno, ename, comm, nvl2(comm, comm*1.1,0)
FROM emp;
NULLIF()
앞의 값과 뒤에 값이 서로 같으면 null을 반환하고, 서로 다르면 앞의 값을 반환
--질문 앞의 값과 뒤에 값이 서로 같으면 null을 반환하고, 서로 다르면 앞의 값을 반환
SELECT empno, ename, comm, NULLIF(comm, 0)
FROM emp;
COALESCE()
COALESCE 함수 : COALESCE(express1, express2,,,expressN)
express1이 NULL이 아니면 express1을 리턴, NULL이면 다음,
express2가 NULL이 아니면 express2를 리턴, NULL이면 다음...
모두가 NULL이면 expressN을 리턴
--질문 comm이 null인 경우 sal을 표시, comm이 null이 아니면 comm을 표시
SELECT comm, COALESCE(comm,sal)
FROM emp;
--질문 comm이 NULL인 경우 100 표시, NULL이 아닌 경우 comm 표시
SELECT comm, COALESCE(comm,100)
FROM emp;
TRIM()
- LTRIM함수와 RTRIM 함수가 결합한 형태의 함수.
- 문자값의 왼쪽 또는 오른쪽 부분에 정의한 문자값이 존재하면 그 문자를 절삭시키는 기능
- 종류
- LEADING : 이전의 LTRIM함수와 동일한 기능 가지고 있음, 컬럼의 왼쪽에 존재하는 문자값을 절삭
- TRAILING : 이전의 RTRIM함수의 기능을 가지고 있으며, 컬럼의 오른쪽에 존재하는 문자값을 절삭
- BOTH : 왼쪽, 오른쪽에 해당하는 문자열이 있으면 절삭
--Leading (LTRIM)
--질문 정의된 칼럼의 값 왼쪽에 해당 문자열이 존재하면 문자값을 절삭시켜서 화면에 출력
SELECT ename, TRIM(Leading 'A' FROM ename) AS TRIM
FROM emp
WHERE ename LIKE 'A%';
--TRAILING (RTRIM)
--질문 정의된 칼럼의 컬럼의 값 오른쪽에 해당 문자열이 존재하면 문자값을 절삭해서 출력
SELECT ename, TRIM(TRAILING 'N' FROM ename) AS TRIM
FROM emp
WHERE ename LIKE '%N';
-- BOTH
-- 질문 정의된 칼럼의 컬럼의 값 양쪽으로 해당 문자열이 존재하면 문자값을 절삭해서 출력
SELECT ename, TRIM(BOTH 'A' FROM ename) AS TRIM
FROM emp
WHERE ename LIKE 'A%';