programing

SQL Server 2008 R2에서 CONCAT 기능을 사용하려면 어떻게 해야 합니까?

linuxpc 2023. 5. 26. 20:46
반응형

SQL Server 2008 R2에서 CONCAT 기능을 사용하려면 어떻게 해야 합니까?

찾고 있었어요.CONCATSQL Server 2008 R2에서 작동합니다.는 이 기능에 대한 링크를 찾았습니다.하지만 이 기능을 사용하면 다음과 같은 오류가 발생합니다.

Msg 195, 레벨 15, 상태 10, 라인 7
'CONCAT'는 인식되는 기본 제공 함수 이름이 아닙니다.

하십니까?CONCATSQL Server 2008 R2에 함수가 있습니까?

그렇지 않은 경우 SQL Server 2008 R2에서 문자열을 연결하려면 어떻게 해야 합니까?

완전성을 위해 SQL 2008에서는 +를 사용합니다.+문자열 연결을 수행하는 연산자입니다.

샘플 코드가 있는 MSDN 참조를 살펴봅니다.SQL 2012부터는 새로운 CONCAT 기능을 사용할 수 있습니다.

CONCATSQL Server 2012의 새로운 기능입니다.당신이 제공한 링크는 이것을 명확하게 합니다. 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)  

EDIT Martin Smith는 SQL Server가 ODBC 기능의 구현을 제공한다고 유용하게 지적합니다.

모든 기둥을 모조하기 전에 주조하는 것이 좋습니다.

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)

SQL 2012 이전 버전(두 가지 솔루션):

SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}

SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')

이 두 가지 솔루션은 1987년 @Martin Smith, @Svish 및 @vas를 포함한 다른 포스터에서 제기된 몇 가지 훌륭한 답변과 경고를 비교합니다.

이러한 옵션은 추가됩니다.NULL로.''(빈 줄) 안전을 위한 주조NULL다양한 행동을 설명하면서 다루는 것.+특정 피연산자와 관련된 연산자.

ODBC Scaler Function 솔루션은 2개의 인수로 제한되는 반면 연산자 접근 방식은 필요에 따라 많은 인수로 확장됩니다.

@한 잠재적인 는 @ @Swifty에서 확인할 수 .varchar는 여기 크는다수정으로 되었습니다.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

콘캣 기능이 작동하지 않는 곳에서 작동할 것입니다.

contat하고 싶은 문자열 사이에 '+'를 사용할 수 있습니다.

SELECT string1 + string2

열 중 하나가 int 열인 경우와 같은 변환 오류가 발생하면 다음과 같은 열을 연결하기 전에 이를 캐스트해야 합니다.

SELECT (CONVERT(nvarchar, intColumn) + string2

언급URL : https://stackoverflow.com/questions/10550307/how-do-i-use-the-concat-function-in-sql-server-2008-r2

반응형