[Oracle] 보너스 포함 연봉 칼럼에 '원'이라는 리터럴 값 제시

    <TMI>

    원래 문제에서는 "보너스 포함 연봉" 별칭 생성후 결과값을 확인하는 것이다. 데이터상 보너스가 null인 것들도 있기 때문에 결과값도 null이 되는 문제가 발생한다. 따라서 본인은 null값이 아닌 (= 보너스 포함 연봉이 존재하는 값)들을 where절에 넣어 해당하는 값들만 조회하고자한다.

    SELECT EMP_NAME, SALARY, BONUS, SALARY,FLOOR(((SALARY+BONUS*12)*12))  "보너스 포함 연봉"
    FROM EMPLOYEE
    WHERE ((SALARY+BONUS*12)*12)  IS NOT NULL ;

     

    결과값에는 이상이 없고, 원하는 결과가 나왔다.

    하지만, 더 나아가, 결과값 뒤에 '원'이라는 리터럴 값을 포함하여 결과를 출력하고 싶다는 생각이 들었다. 

     

     

     

    <문제 코드>

    <접근1>

    리터럴 값을 제시하면 되지 않을까? 해서 '원'을 추가했지만, 오류 문구가 떴다.

    문법 자체도 틀렸을 뿐만 아니라, 문법이 맞더라도 내가 원하는 (값 + 원)에 해당하는 코드도 아니었다.

    SELECT EMP_NAME, SALARY, BONUS, SALARY,FLOOR(((SALARY+BONUS*12)*12)) '원' "보너스 포함 연봉"
    FROM EMPLOYEE
    WHERE ((SALARY+BONUS*12)*12)  IS NOT NULL ;

     

    <위의 경우 바른 문법>

    salary 컬럼 옆에 , 를 찍고 리터럴 값을 제시해야한다. 하지만 이 역시도 내가 원하는 형태가 아니었다.

    SELECT EMP_NAME, SALARY, BONUS, SALARY , '원' , FLOOR(((SALARY+BONUS*12)*12)) "보너스 포함 연봉"
    FROM EMPLOYEE
    WHERE ((SALARY+BONUS*12)*12)  IS NOT NULL ;

     

     

     

     

    <접근2>

    연결 연산자를 활용해서 코드를 기술해 보았다. 드디어 원하는 결과값이 나왔다.

    SELECT EMP_NAME, SALARY, BONUS, SALARY,FLOOR(((SALARY+BONUS*12)*12)) || '원' "보너스 포함 연봉"
    FROM EMPLOYEE
    WHERE ((SALARY+BONUS*12)*12)  IS NOT NULL ;

     

     

    <결론>

    데이터 값에 곧바로 '원' 'kg'등 문구를 출력하기 위해서는 리터럴 값만을 제시하는 것이 아니라 || ( 연결연산자 )를 이용해서 데이터 값을 붙여줘야한다 

     

     

    728x90

    댓글