728x90
CONCAT() 함수란 ?
문자열을 병합할 수 있도록 도와주는 함수
즉, 문자열을 이어 붙여 쓰고 싶을 때 사용함
기본 사용법 [Oracle]
SELECT CONCAT('문자열1', '문자열2') FROM [TABLE명];
또한, 다른 방법으로는 ' || ' 연산자를 사용하여 문자열을 연결 할 수도 있다.
SELECT '문자열1' || '문자열2' FROM [TABLE명];
ORACLE에서 CONCAT을 사용할 때엔 문자열 2개까지만 병합이 가능하며, 2개 이상의 문자열을 병합하고 싶다면 ' || ' 연산자를 사용할 수 있다.
기본 사용법 [MySQL]
SELECT CONCAT('문자열1', '문자열2') FROM [TABLE명];
또한, 'CONCAT_WS()' 함수를 사용하여 구분자를 지정하여 문자열을 연결하는 것도 가능하다.
SELECT CONCAT_WS('-', '문자열1', '문자열2') FROM [TABLE명];
기본 사용법 [SQL Server]
SELECT CONCAT('문자열1', ' ', '문자열2') FROM [TABLE명];
SQL Server에서는 '+' 연산자를 사용하여 문자열을 연결하는 것도 가능하다.
SELECT '문자열1' + ' ' + '문자열2' FROM [TABLE명];
위와 같이 공백을 포함하여 연결할 수 있다.
하지만 주의해야 할 점은 '+' 연산자를 사용할 때 NULL 값이 포함되는 경우 결과는 NULL이 된다. 따라서 NULL 값을 처리하려면 'ISNULL' 혹은 'COALESCE' 함수를 사용해 처리해야 한다.
ISNULL 처리 방식
SELECT ISNULL('문자열1', '') + ' ' + ISNULL('문자열2', '') FROM [TABLE명];
COALESCE 처리 방식
SELECT COALESCE('문자열1', '') + ' ' + COALESCE('문자열2', '') FROM [TABLE명];
CONCAT()과 || 의 차이점 [ IN ORACLE ]
- 가장 큰 차이점은 || 는 연산자이며, CONCAT()은 함수이기 때문에 우선순위가 다름
- 보통 연산자가 함수보다 우선순위가 더 높기 때문에 더 빨리 처리되고 함수는 비교적 느림
- 성능적인 관점에서는 CONCAT이 자동으로 형 변환을 해주기 때문에 더 좋을 수 있음
MySQL과 Oracle과 SQL Server 차이점
1. 문법
Oracle : 'CONCAT' 함수와 ' || ' 연산자 모두 사용 가능함
MySQL : 'CONCAT' 함수와 'CONCAT_WS' 함수를 사용 가능함
SQL Server : 'CONCAT' 함수는 모든 입력값을 문자열로 변환하여 반환함
문자열 이외의 자료형으로도 입력 받을 수 있지만, 이 경우 자동으로 문자열로 변환됨
2. NULL 처리
MySQL : 'CONCAT' 함수나 'CONCAT_WS' 함수는 NULL 값을 무시하고 나머지 문자열을 연결함
Oracle : 'CONCAT' 함수나 ' || ' 연산자에서는 하나라도 NULL 값이 포함되면 결과가 NULL이 됨
SQL Server : NULL 값을 자동으로 무시하고 문자열을 연결함
NULL 처리 방법
[Oracle]
SELECT 'Hello ' || NULL AS result FROM dual;
-- 결과: NULL
[MySQL]
SELECT CONCAT('Hello ', NULL) AS result;
-- 결과: 'Hello '
SELECT CONCAT_WS(' ', 'Hello', NULL, 'World') AS result;
-- 결과: 'Hello World'
728x90
'DBMS > SQL Study' 카테고리의 다른 글
[SQL] BETWEEN .. AND .. | IN (0) | 2023.08.29 |
---|---|
[SQL] 논리 연산자 (0) | 2023.08.29 |
[SQL] AS (Alias) 키워드 (0) | 2023.08.28 |
[SQL] TRUNCATE와 DELETE | DISTINCT와 GROUP BY 의 차이점 (0) | 2023.08.28 |
[SQL] DML, DDL, TCL, DCL 이란 ? (0) | 2023.08.28 |