본문 바로가기

Database/SQL

[코테를 위한 Oracle 정리] 4. 열 계산 및 연결하기

손에 잡히는 10분 SQL 7장 참고

계산 필드가 필요한 경우

  • 각자 다른 테이블에 있는 데이터를 하나의 열(필드)로 만들고 싶은 경우
  • 합계, 평균, 열간의 덧셈/뺄셈 등 계산 값

이렇게 계산된 열들은 데이터베이스에 실제로 존재하는 필드는 아니다.

필드 연결하기

여러 값을 합쳐 한 개의 긴 값을 만드는 것
Oracle에서는 || (파이프 2개)를 사용해서 연결한다.

SELECT VEND_NAME || '(' || VEND_COUNTRY || ')', VEND_NAME, VEND_COUNTRY
FROM VENDORS
ORDER BY VEND_NAME;

  • 다른 DBMS는 +나 CONCAT과 같은 함수를 사용해야 한다.
  • 하지만 결과 사진과 같이 공백이 생겨있다. 대부분의 데이터베이스는 열 길이에 맞춰 텍스트를 저장하기 때문에 이를 잘라내야 한다

 

SELECT RTRIM(VEND_NAME) || '(' || RTRIM(VEND_COUNTRY) || ')', VEND_NAME, VEND_COUNTRY
FROM VENDORS
ORDER BY VEND_NAME;

  • 이렇게 RTRIM 함수를 사용하면 공백을 제거할 수 있다.
  • 또한 AS를 통해 별칭으로 계산 필드의 열 이름으로 만들 수 있다.
    • 별칭을 파생열 이라고도 한다
    • 별칭으로도 ORDER BY 에서 사용할 수 있다.

 

SELECT 	PROD_ID, QUANTITY, ITEM_PRICE,
    	QUANTITY * ITEM_PRICE AS EXPANDED_PRICE
FROM ORDERITEMS
WHERE ORDER_NUM = 20008;
  • +, -, *, / 와 같은 연산자를 사용할 수 있다.
  • 우선순위를 위한 괄호 또한 사용 가능하다
  • 이렇게 만든  EXPANDED_PRICE는 클라이언트 프로그램에서도 사용 가능하다