/ / Конвертиране на текст в типа данни - sql-server-2008-r2

Конвертиране на текст в типа данни - sql-server-2008-r2

Имам таблица, която по някаква причина съхранява текст като 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))

Той връща 䕔 呓 吠 塅, което очевидно не е правилно, тъй като трябва да се върне "TEST TEXT"

Какво правим тук?

Отговори:

1 за отговор № 1

Текстът, който се опитвате да съхраните, е кодиран като двоичен ASCII знаци. Опитвате се да го превърнете обратно в a Unicode текстов низ, който не е това, което първоначално е, затова отново се връщате в изкривен текст.

Променете текстовия ни низ в a Unicode string чрез добавяне на N пред него:

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

То трябва да върне правилния текст. Тестван на SQL Server 2008


1 за отговор № 2

Можете да използвате тази:

SELECT CONVERT(**VARCHAR(MAX)**, CONVERT(VARBINARY(MAX), **CAST("TEST TEXT" AS IMAGE)**,**0**))

По принцип не сте били съвместими с вашитетип реализации. В някои части сте използвали NVarChar и някои части Varchar. Също така, номерът 2 в края се отразява на резултата. В тестовете за преобразуване, когато не посочите кода, се използва стойността по подразбиране (0). Така че, ако го конвертирате обратно, трябва да използвате същия код.