CONCAT
SQL Server 2008 R2에서 함수를 찾고있었습니다 . 나는 이 기능에 대한 링크를 발견 . 하지만이 기능을 사용하면 다음과 같은 오류가 발생합니다.
메시지 195, 수준 15, 상태 10, 줄 7
‘CONCAT’은 인식 된 기본 제공 함수 이름이 아닙니다.
합니까 CONCAT
기능은 SQL 서버 2008 R2에 존재?
그렇지 않은 경우 SQL Server 2008 R2에서 문자열을 어떻게 연결합니까?
답변
CONCAT
제공 한 링크는 2008 R2를 포함한 이전 버전 의 기능이 아닙니다 .
SQL Server 2012의 일부라는 것은 문서 트리에서 볼 수 있습니다.
SQL Server 2012
Product Documentation
Books Online for SQL Server 2012
Database Engine
Transact-SQL Reference (Database Engine)
Built-in Functions (Transact-SQL)
String Functions (Transact-SQL)
편집 Martin Smith는 SQL Server가 ODBC CONCAT
기능 구현을 제공 한다고 유용하게 지적 합니다 .
답변
완전성을 위해-SQL 2008에서는 더하기 +
연산자를 사용하여 문자열 연결을 수행합니다.
샘플 코드와 함께 MSDN 참조 를 살펴보십시오 . SQL 2012부터는 새로운 CONCAT 함수 를 사용할 수 있습니다 .
답변
연결하기 전에 모든 열을 캐스팅하는 것이 좋습니다.
cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)
이것은 당신을 위해 작동합니다.
답변
언급 된대로 CONCAT은 SQL Server 2012 이전에는 지원되지 않습니다. 그러나 제안 된대로 + 연산자를 사용하여 간단히 연결할 수 있습니다. 그러나이 연산자는 첫 번째 피연산자가 숫자 인 경우 추가되고 연결되지 않을 것이라고 생각하므로 오류가 발생합니다. 이 문제를 해결하려면 앞에 ”를 추가하십시오. 예를 들면
someNumber + 'someString' + .... + lastVariableToConcatenate
오류가 발생하지만 '' + someNumber + 'someString' + ......
잘 작동합니다.
또한 연결할 숫자가 두 개인 경우 그 사이에 ”를 추가하십시오.
.... + someNumber + '' + someOtherNumber + .....
답변
SQL Server 2012 CONCAT 함수에 대한 대체 근사치의 NULL 안전 드롭
SQL Server 2012 :
SELECT CONCAT(data1, data2)
PRE SQL 2012 (두 가지 솔루션) :
SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}
SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')
이 두 가지 솔루션은 @Martin Smith, @Svish 및 @ vasin1987을 포함한 다른 포스터에서 제기 한 몇 가지 훌륭한 답변과 경고를 수집합니다.
이러한 옵션은 특정 피연산자와 관련된 연산자 의 다양한 동작을 고려하면서 안전한 처리를 위해 (빈 문자열) 캐스팅에 추가 NULL
됩니다 .''
NULL
+
노트 ODBC 스케일러 기능 반면 용액의 인자로 제한 +
연산자 필요한 접근은 많은 인수로 확장된다.
varchar
여기에서 해결 된 기본 크기 와 관련하여 @Swifty에서 식별 한 잠재적 인 문제에 유의 하십시오 varchar(MAX)
.
답변
(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert
필드 유형이 다른 경우에만 캐스트 또는 변환하십시오.
삽입 할 때 값을 삽입해야하는 올바른 위치에 있어야합니다. “as”를 사용하면 오류가 발생합니다.
즉
Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))
답변
예, 함수는 SQL 2008에 없습니다. 캐스트 연산을 사용하여 수행 할 수 있습니다.
예를 들어 우리는 employee
테이블이 있고 당신 name
은applydate
.
그래서 당신은 사용할 수 있습니다
Select cast(name as varchar) + cast(applydate as varchar) from employee
concat 기능이 작동하지 않는 곳에서 작동합니다.