2016-09-28 4 views
1

어떤 이유로 텍스트를 IMAGE로 저장하는 테이블이 있습니다. 데이터를 가져 와서 읽을 수 있습니다.텍스트를 이미지 데이터 형식으로 변환

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), column,2)) FROM table 

이제 데이터를 테이블에 다시 삽입해야합니다. 나는

SELECT CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX))) 

을 시도하지만 그것을 변환 테스트 할 때 다시 사용했습니다

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX))),2)) 

그것은 반환 䕔 呓 吠 塅는 "테스트 TEXT"

를 반환해야합니다으로 바로 분명하지 않은 무엇 내가 여기서 잘못하고있는거야?

답변

1

저장하려는 텍스트는 이진수 ASCII 자로 인코딩됩니다. 원래 문자열이 아닌 텍스트 문자열 Unicode으로 다시 변환하려고하므로 잘못된 텍스트가 다시 나타납니다.

변경 그것의 앞에 N을 추가하여 Unicode 문자열로 소스 텍스트 문자열 :

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST(N'TEST TEXT' AS VARBINARY(MAX))),2))

가 올바른 텍스트를 반환해야합니다. SQL Server에서이 테스트를하는 것은 2008

1

당신이 하나를 사용할 수 있습니다 : (VARBINARY (MAX), CAST IMAGE AS ('TEST 텍스트') 변환, SELECT CONVERT (VARCHAR (MAX)0))

기본적으로 문자 유형 변환과 일치하지 않았습니다. 일부에서는 NVarChar와 일부 Varchar를 사용했습니다. 또한 끝에 숫자 2가 결과에 영향을줍니다. Convert 문에서 코드를 지정하지 않으면 기본값 (0)이 사용됩니다. 따라서 다시 변환하는 경우 동일한 코드를 사용해야합니다.

관련 문제