Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Заменить бинарное поле в таблице на Unicode текст


Автор: DigitalDummy 14.7.2008, 15:52
Здоровья вам, и разуменья, достопочтенный великий народ форума Винград! Поделитесь знаниями и мыслями, кто сколько сможет, по следующей задаче:

В таблице, кроме других, есть одно «бинарное» поле. В нем я храню текстовую строку в формате Unicode (UTF-16) в виде, соответственно, массива байт. В менеджере базы (SQL Server Management Studio Express), конечно же, при обзоре таблицы поле видно как <Binary data>. А хочется, чтобы оно отображалось там как текст (а то не удобно искать). Что можно сделать, чтобы осуществить данную мечту при условии, что кодировка должна быть Unicode?

Я мало разбираюсь в настройках БД вообще, и в кодировках в частности. Горячо приму к сердцу любые советы, ссылки или общие описания, как вообще с вопросом кодировок обстоят дела в БД и как это все «внутри» работает. Вопрос только о базе «Microsoft SQL Server».

Большое спасибо за любую помощь.

Автор: DigitalDummy 5.10.2008, 16:01
Прошли годы... И я узнал как можно было всё сделать.

Во-первых, чтобы хранить данные в Unicode UTF-16 можно было изначально поставить этому полю тип nvarchar или nchar. Этого я не знал, так как начал работать с БД первые несколько дней.

Во-вторых, отвечу на свой вопрос: бинарное поле в таблице (тип varbinary или binary) можно представить другим нужным мне типом данных ввиде SQL запроса (используя функцию CAST):
Код

-- Column это нужное поле БД.
-- Table это, соответственно, таблица.
SELECT CAST(Column AS nvarchar) FROM Table

Но при этом есть замечание: полученное поле не будет иметь идентификатора. Чтобы обратиться к "изменённому" полю, представленному как другой тип данных, но так, как-будто оно тоже самое, нужно указать для него имя (используя оператор AS):
Код

SELECT CAST(Column AS nvarchar) AS Column FROM Table


Всем спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)