태그 보관물: sql-server

sql-server

SQL Server 2008 R2에서 CONCAT 함수를 어떻게 사용합니까?

CONCATSQL 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테이블이 있고 당신 nameapplydate .

그래서 당신은 사용할 수 있습니다

Select   cast(name as varchar) + cast(applydate as varchar) from employee

concat 기능이 작동하지 않는 곳에서 작동합니다.