2009-05-29 3 views
0

하나의 열에있는 모든 문자열을 함께 연결하는 T-SQL을 작성했지만 nvarchar(max)은 저장하기에 충분하지 않습니다.SQLserver 2005에서 무제한 문자를 저장하는 변수를 만들 수 있습니까?

다른 방법이 있습니까?

내가 사용하려고 해요 코드는 다음과 같습니다

DECLARE @codes NVARCHAR(max) 
SET @codes = '' 
SELECT @codes = @codes + ',' + CONVERT(nvarchar,code) 
FROM dbo.listing SELECT @codes 
+0

사용하려는 코드의 결과는 무엇입니까? –

답변

3

무제한, 아니. 어떤 시점에서 스토리지 공간이 부족하게됩니다. 당신이 대략 2 바이트 안에 맞지 않는 개개의 요소를 만드는 것을 발견한다면, 당신은 뭔가 잘못하고있는 것입니다.

당신이 해결하려고하는 "진짜"문제를 말해 주시겠습니까? 선입관 없이는 어떤 방식으로해야합니다.

+0

내 문제를 보자, 내 데이터베이스는 약 100000 행을 가지고 하나의 열 "코드"는 int 데이터 형식입니다. 내 문제는 : 모든 코드를 함께 연결할 수 있지만 반환하는 nvarchar (max) 이상입니다. 어떻게 해결할 수 있니? – pang

+1

왜 이것을하고 싶습니까? 당신은 아직도 뿌리 문제, 당신이 그것을 특정한 방식으로하는 문제 만 진술하고 있지 않습니다. 어쨌든 ~ 12 자의 100,000 개의 정수는 각각 120 만 자 (240 만 바이트)에 불과합니다. varchar (최대)는 24 억 바이트를 처리 할 수 ​​있어야합니다. 어쩌면 당신의 수치는 지표가 아니지만 최선의 대답은 이것이 필요한 이유입니다. SQLSvr 외부에서 사용될 경우 파일에 쓸 수 있습니다 (한 가지 예). 사용할 데이터는 무엇입니까? – paxdiablo

+0

빠른 응답 팍스 주셔서 감사합니다, 이것은 단지 한 번 생성, 그래서 나는 SQL 문에서 그것을하고 싶습니다. 내 코드 DECLARE @codes NVARCHAR (최대) SET의 @codes의 = '' SELECT @codes의 =의 @codes + '보자'+ SELECT @codes 에게 dbo.listing로부터 (NVARCHAR, 코드) 변환 그것은 아무튼 ' 모든 문자를 반환하지 않으며, 일부는 자동으로 잘립니다. – pang

0

당신이 국제적인 문자에 대해 걱정하지 않는다면 내 머리 꼭대기에서 생각할 수있는 유일한 제안은 varchar (최대)를 사용하는 것입니다. 그러나 그것은 당신에게 스토리지 용량의 엄청난 증가를주지 않을 것입니다.

정말 커다란 SQL 문자열이어야합니다.

0

당신은 NVARCHAR (최대)에 코드 열을 캐스팅 할 필요가 그렇지 않으면이 자릅니다 :

DECLARE @codes NVARCHAR(max) 
SET @codes = '' 
SELECT @codes = @codes + ',' + CONVERT(nvarchar**(max)**,code) 
FROM dbo.listing SELECT @codes 
0

이 끔찍한 변수와 함께 할 계획입니까? 왜 테이블에 조인을 쓰는 것이 아닌가?

관련 문제