MySQL에서 || 연산자로 문자열 연결이 가능할까?
네, 가능합니다. MySQL에서는 기본적으로 || 연산자가 논리 OR로 해석되지만, sql_mode를 PIPES_AS_CONCAT으로 설정하면 Oracle이나 PostgreSQL처럼 || 연산자를 문자열 연결에 사용할 수 있습니다.
1. sql_mode 설정 구문
설정 방법은 매우 간단합니다. 아래 구문을 실행하면 됩니다.
set sql_mode=PIPES_AS_CONCAT;
설정 후에는 다음과 같은 구문으로 || 연산자를 활용한 문자열 연결이 가능합니다.
SELECT 'yourValue' || yourColumnName AS anyAliasName FROM yourTableName;
2. 예제용 테이블 생성
위 구문의 동작을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table PipeConcatDemo
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.93 sec)
3. 샘플 데이터 삽입
insert 명령어를 사용해 테이블에 레코드를 몇 개 삽입합니다.
mysql> insert into PipeConcatDemo values('Larry');
Query OK, 1 row affected (0.18 sec)
mysql> insert into PipeConcatDemo values('John');
Query OK, 1 row affected (0.15 sec)
mysql> insert into PipeConcatDemo values('Maxwell');
Query OK, 1 row affected (0.23 sec)
mysql> insert into PipeConcatDemo values('Bob');
Query OK, 1 row affected (0.17 sec)4. 저장된 데이터 확인
select 문을 사용해 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from PipeConcatDemo;
실행 결과는 다음과 같습니다.
+---------+
| Name |
+---------+
| Larry |
| John |
| Maxwell |
| Bob |
+---------+
4 rows in set (0.00 sec)
5. sql_mode 변경 후 || 연산자로 연결하기
본격적인 연결 작업 전에, 다음 쿼리를 실행하여 sql_mode를 PIPES_AS_CONCAT으로 변경합니다.
mysql> set sql_mode=PIPES_AS_CONCAT;
Query OK, 0 rows affected (0.00 sec)
이제 || 연산자를 사용해 문자열을 자유롭게 연결할 수 있습니다.
mysql> select 'Good Morning !!! ' || Name AS PipeConcatenationDemo from PipeConcatDemo;
실행 결과는 다음과 같습니다.
+--------------------------+
| PipeConcatenationDemo |
+--------------------------+
| Good Morning !!! Larry |
| Good Morning !!! John |
| Good Morning !!! Maxwell |
| Good Morning !!! Bob |
+--------------------------+
4 rows in set (0.00 sec)
추가 팁
SET sql_mode=PIPES_AS_CONCAT;은 현재 세션에만 적용됩니다. 서버 전체에 영구적으로 적용하려면 SET GLOBAL sql_mode='PIPES_AS_CONCAT';을 실행하거나, MySQL 설정 파일(my.cnf 또는 my.ini)의 [mysqld] 섹션에 해당 옵션을 추가한 뒤 서버를 재시작하면 됩니다. 참고로 별도 설정 없이 문자열을 연결하려면 MySQL의 기본 함수인 CONCAT()을 사용하는 것이 가장 안전하고 이식성이 좋습니다.