본문 바로가기
Back-End/Database

[SQL] 연결 연산자 / 리터럴(literal) 문자열 / 대체 인용(q) 연산자

by 찐코딩 2021. 10. 4.


연결 연산자

※ 연결 연산자 ( || ) 는 shift + \ 로 나타낼 수 있다.

형식) select [칼럼명 1] || [칼럼명 2] from [테이블명];

연결 연산자 ( || ) 양쪽의 열이 결합되어 단일 열을 출력한다.

select ename || sal from emp;

연산자 사용 전(select ename, sal from emp;) 실행했을 때와 비교

이렇게 공백 없이 바로 이름과 연봉(SAL)값이 이어져 화면에 띄워진 것을 볼 수 있다.

(컬럼명도 ename||sal 임)

 

literal 문자열

그렇지만 보통 컬럼 사이에 공백도 넣고, 필요한 문자열도 넣어 출력하는 일이 더 빈번하므로
이럴때 사용하는 문자열, literal 키워드를 사용한다.

컬럼명이나 별칭이 아닌 select 목록에 포함되는 문자, 표현식 숫자를 의미
-- 날짜나 문자열인 경우, 단일 인용 부호('')를 사용해야 한다. 
숫자 리터럴은 그럴 필요가 없다.

--[문제] 아래 예시와 같이 출력되도록 하시오.
-- 예) KING 사원의 연봉은 60000 입니다.

select ename || '사원의 연봉은' || sal *12 || '입니다.' as "사원의 연봉" from emp;
-- as붙이는 이유는 우리가 붙였던 수식이 그대로 출력되기 때문에 이름을 붙여주는 것임.

AS 키워드를 사용하여 원하는 컬럼명으로 수정도 된 것을 확인할 수 있다.

 

문자열 자체에 작은 따옴표가 포함되어 있는 경우, 이것은 문자열 구분자로 해석되어 버린다.

이런 경우, 대체 인용(q) 연산자를 사용하여 대괄호 [ ] 가 문자열 구분자로 사용되게 한다.

예시) KING 사원의 '21년 연봉은 60000 입니다.

select ename || ' 사원의 '21년 연봉은' || sal *12 || '입니다.' as "사원의 '21년 연봉" from emp;      -- 에러

select ename || q'[ 사원의 '21년 연봉은]' || sal *12 || '입니다.' as "사원의 '21년 연봉" from emp;

올바르게 출력된 것을 볼 수 있다.

댓글