SQL Server의 열에 문자열을 어떻게 추가합니까? 작동하지 않는SQL Server - 텍스트 열에 문자열 추가 (concat equivalent)
UPDATE [myTable] SET [myText]=' '+[myText]
는 :
데이터 유형 VARCHAR 및 텍스트 추가 연산자에서 호환되지 않습니다.
당신은 MySQL에서 concat을 사용하지만 SQL Server에서는 어떻게합니까?
SQL Server의 열에 문자열을 어떻게 추가합니까? 작동하지 않는SQL Server - 텍스트 열에 문자열 추가 (concat equivalent)
UPDATE [myTable] SET [myText]=' '+[myText]
는 :
데이터 유형 VARCHAR 및 텍스트 추가 연산자에서 호환되지 않습니다.
당신은 MySQL에서 concat을 사용하지만 SQL Server에서는 어떻게합니까?
같이 말했다 최고의 전에 NVARCHAR (최대)에 컬럼의 데이터 유형을 설정하는 것입니다,하지만 그건 불가능하면 다음과 같은 사용하여 캐스팅을하거나 변환 할 수 있습니다
흠, 난이 밖으로 이동하는 방법을 완전히 확실하지 않다,하지만 CAST(' ' AS TEXT) + [myText]
을 수행하려고합니다.
또한 Text 데이터 형식을 사용하는 대신 varchar를 사용하는 것이 좋습니다. 그래도 문제가 해결되지 않으면, 이미지, ntext 또는 텍스트 데이터 유형에 대한 SQL 서버에서 작동하지 않습니다 ' ' + CAST ([myText] AS VARCHAR(255))
.
실제로 이미지, 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+)에 대한 좋은 예를 보여줍니다.
SQL Server에서 TEXT
데이터 형식을 사용하지 마십시오!
2005 년 버전 이후로 더 이상 사용되지 않습니다. 8000자를 초과해야하는 경우 VARCHAR(MAX)
을 대신 사용하십시오.
데이터 형식이 인 반면 은 데이터 형식이 일반 문자열 기능을 지원하지 않습니다. VARCHAR 형식 만 사용하는 경우 문이 정상적으로 작동합니다.
-- 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
UPDATE test SET a = CONCAT(a, "more text")
감사하지만, 첫 번째는이 오류 피연산자 데이터 형식의 텍스트가 추가 연산자에 대해 유효하지 않습니다 제공합니다. myText는 varchar가 아닌 text 유형의 텍스트이며 텍스트 길이를 알 수 없으므로 매우 길 수 있습니다. – Aximili
흠, VARCHAR (255) 대신 VARCHAR (MAX)를 사용할 수 있다고 가정합니다. 아마 더 좋은 방법이있는 것 같습니다. – Meiscooldude