-
[Oracle] 여러 컬럼 합쳐서 출력하기 (컬럼 붙여서 출력)DB (DBMS)/쿼리 2021. 1. 8. 15:27
한 줄 요약
예시 ) SELECT 컬럼명1 || '.' || 컬럼명2 || '.' || 컬럼명3 || '.' || 컬럼명4 FROM 테이블명 WHERE 컬럼명 = 조건
여러 컬럼을 합쳐서 출력하는 게 편해서 꽤 잘 이용하는 터라 생각난 김에 포스팅을 합니다.
Oracle에서는 여러 연산자를 지원하는데 이는 아래와 같습니다.
- 1. 수식연산자 (예: +, -, *, /)
- 2. 문자연산자 (예: ||)
- 3. 논리연산자 (예: =,<,>)
- 4. 집합연산자 (예: UNION)
- 5. 계층형 쿼리연산자
소개할 문자 연산자 : ||
이 연산자는 두 문자를 연결하는 연산을 수행합니다. (
컴퓨터는 계산기이므로 연산한다는 표현이 맞다.)두 문자를 연결하기 위해 쓰는 표현이라고 이해하면 됩니다.
저는 SELECT 문을 작성할 때 자주 사용하는데 오랜만에 쿼리를 작성할 때는 가끔 헷갈리기도 합니다.
예시는 아래와 같습니다.
HOST라는 이름의 테이블이 있다고 가정하고 각 컬럼명이 ADDR1부터 ADDR4, HOSTNAME 이라고 생각합시다.
SELECT * FROM HOST WHERE HOSTNAME ='MYHOME';
쿼리를 실행하면 아래와 같은 출력 결과가 나옵니다.
[출력 결과]
ADDR1 ADDR2 ADDR3 ADDR4 HOSTNAME 172 24 61 120 MYHOME 172 0 0 1 MYHOME IP 주소 정보를 확인하는데는 이렇게 출력되도 별로 안 불편합니다. 오히려 칸이 나뉘어 가독성이 더 좋기도 합니다.
복붙 작업을 할 때도 엑셀로 영역복사+붙여넣기를 한다면 유용하지만
172.24.61.120 이렇게 완성된 한 줄을 복붙해야하는 상황이면 하나하나 보면서 .(온점)을 찍어주며 작성하는 게 귀찮습니다.
이제 상기 || 문자 연산자를 써서 출력해봅니다.
[작성 쿼리]
SELECT ADDR1 || '.' || ADDR2 || '.' || ADDR3 || '.' || ADD4 FROM HOST WHERE HOSTNAME = 'MYHOME';
[출력 결과]
ADDR1 || '.' || ADDR2 || '.' || ADDR3 || '.' || ADD4 HOSTNAME 172.24.61.120 MYHOME 172.0.0.1 MYHOME ADDR1 컬럼부터 ADDR4 컬럼까지 붙여서 출력했지만 컬럼명이 지저분해서 멋이 없습니다.
ALIAS (별명)을 이용해서 깔끔하게 만들어줍니다.
[작성 쿼리]
SELECT ADDR1 || '.' || ADDR2 || '.' || ADDR3 || '.' || ADD4 AS IP FROM HOST WHERE HOSTNAME = 'MYHOME';
[출력 결과]
IP HOSTNAME 172.24.61.120 MYHOME 172.0.0.1 MYHOME