2010-06-23 3 views
28

SQL Server의 열에 문자열을 어떻게 추가합니까? 작동하지 않는SQL Server - 텍스트 열에 문자열 추가 (concat equivalent)

UPDATE [myTable] SET [myText]=' '+[myText] 

는 :

데이터 유형 VARCHAR 및 텍스트 추가 연산자에서 호환되지 않습니다.

당신은 MySQL에서 concat을 사용하지만 SQL Server에서는 어떻게합니까?

답변

53

같이 말했다 최고의 전에 NVARCHAR (최대)에 컬럼의 데이터 유형을 설정하는 것입니다,하지만 그건 불가능하면 다음과 같은 사용하여 캐스팅을하거나 변환 할 수 있습니다

3

흠, 난이 밖으로 이동하는 방법을 완전히 확실하지 않다,하지만 CAST(' ' AS TEXT) + [myText]

을 수행하려고합니다.

또한 Text 데이터 형식을 사용하는 대신 varchar를 사용하는 것이 좋습니다. 그래도 문제가 해결되지 않으면, 이미지, ntext 또는 텍스트 데이터 유형에 대한 SQL 서버에서 작동하지 않습니다 ' ' + CAST ([myText] AS VARCHAR(255))

+0

감사하지만, 첫 번째는이 오류 피연산자 데이터 형식의 텍스트가 추가 연산자에 대해 유효하지 않습니다 제공합니다. myText는 varchar가 아닌 text 유형의 텍스트이며 텍스트 길이를 알 수 없으므로 매우 길 수 있습니다. – Aximili

+0

흠, VARCHAR (255) 대신 VARCHAR (MAX)를 사용할 수 있다고 가정합니다. 아마 더 좋은 방법이있는 것 같습니다. – Meiscooldude

8

+ (String Concatenation)을 시도

.

실제로 이미지, ntext 및 텍스트는 all deprecated입니다.

ntext, text 및 image 데이터 형식은 MicrosoftSQL Server의 이후 버전에서 제거 될 예정입니다. 새로운 개발 작업 에 이러한 데이터 형식을 사용하지 말고 에서 현재 사용하는 응용 프로그램을 수정하십시오. nvarchar (max), varchar (max) 및 varbinary (max) 을 대신 사용하십시오.

이전 버전의 SQL Server를 사용하는 경우 UPDATETEXT을 사용하여 연결을 수행하려고합니다. 어떤 Colin Stasiuk이 자신의 블로그 게시물 String Concatenation on a text column (SQL 2000 vs SQL 2005+)에 대한 좋은 예를 보여줍니다.

14

SQL Server에서 TEXT 데이터 형식을 사용하지 마십시오!

2005 년 버전 이후로 더 이상 사용되지 않습니다. 8000자를 초과해야하는 경우 VARCHAR(MAX)을 대신 사용하십시오.

데이터 형식이 인 반면 은 데이터 형식이 일반 문자열 기능을 지원하지 않습니다. VARCHAR 형식 만 사용하는 경우 문이 정상적으로 작동합니다.

0
을하는 데 도움이

-- create a test table 
create table test (
    a text 
) 
-- insert test value 
insert into test (a) values ('this is a text') 
-- the following does not work !!! 
update test set a = a + ' and a new text added' 
-- but this way it works: 
update test set a = cast (a as nvarchar(max)) + cast (' and a new text added' as nvarchar(max)) 
-- test result 
select * from test 
-- column a contains: 
this is a text and a new text added 

희망을

SQL 쿼리에서 두 문자열을 결합하려면 CONCAT (Express1, Express2, ...)

Like ....

SELECT CODE, CONCAT(Rtrim(FName), " " , TRrim(LName)) as Title FROM MyTable 
1
UPDATE test SET a = CONCAT(a, "more text") 
관련 문제