ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

     

Designed by Tistory.