[sql] SQL Server에서 쿼리의 텍스트를 어떻게 연결합니까?

다음 SQL :

SELECT notes + 'SomeText'
FROM NotesTable a

오류 제공 :

데이터 형식 nvarchar 및 text는 add 연산자에서 호환되지 않습니다.



답변

유일한 방법은 텍스트 필드를 nvarchar 필드로 변환하는 것입니다.

Select Cast(notes as nvarchar(4000)) + 'SomeText'
From NotesTable a

그렇지 않으면 응용 프로그램에서 연결을 수행하는 것이 좋습니다.


답변

NULL 값도 고려할 수 있습니다. 귀하의 예에서 메모 열에 null 값이 있으면 결과 값은 NULL입니다. null 값이 빈 문자열로 동작하도록하려면 (답이 ‘SomeText’로 나오도록) IsNull 함수를 사용합니다.

Select IsNull(Cast(notes as nvarchar(4000)),'') + 'SomeText' From NotesTable a


답변

SQL Server 2005 이상을 사용하는 경우 Notes 필드의 데이터 크기에 따라 문자열이 잘릴 수있는 특정 길이로 캐스팅하는 대신 nvarchar (max)로 캐스팅하는 것을 고려할 수 있습니다.

Select Cast(notes as nvarchar(max)) + 'SomeText' From NotesTable a


답변

문자열 유형을 연결하기 위해 명시 적으로 동일한 유형으로 캐스팅해야합니다. 귀하의 경우에는 ‘SomeText'(N’SomeText ‘) 앞에’N ‘을 추가하여 문제를 해결할 수 있습니다. 그래도 작동하지 않으면 Cast ( ‘SomeText’as nvarchar (8))을 시도하십시오.


답변

또 다른 옵션은 CONCAT 명령입니다.

SELECT CONCAT(MyTable.TextColumn, 'Text') FROM MyTable


답변

SQL Server 2005 이상을 사용하는 경우 테이블 정의에서 NVARCHAR (MAX)로 전환하는 것을 고려할 수 있습니다. SQL Server 2000의 TEXT, NTEXT 및 IMAGE 데이터 형식은 이후 버전의 SQL Server에서 더 이상 사용되지 않습니다. SQL Server 2005는 데이터 형식에 대한 이전 버전과의 호환성을 제공하지만 대신 VARCHAR (MAX), NVARCHAR (MAX) 및 VARBINARY (MAX)를 사용해야합니다.


답변