위로 아래

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()

  1. LTRIM함수와 RTRIM 함수가 결합한 형태의 함수.
  2. 문자값의 왼쪽 또는 오른쪽 부분에 정의한 문자값이 존재하면 그 문자를 절삭시키는 기능
  3. 종류
    1. LEADING : 이전의 LTRIM함수와 동일한 기능 가지고 있음, 컬럼의 왼쪽에 존재하는 문자값을 절삭
    2. TRAILING : 이전의 RTRIM함수의 기능을 가지고 있으며, 컬럼의 오른쪽에 존재하는 문자값을 절삭
    3. 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%';