Изменение кодировки "на ходу"

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
igrok
Сообщения: 9
Зарегистрирован: 13 янв 2006, 16:24

Изменение кодировки "на ходу"

Сообщение igrok » 04 май 2006, 07:01

Сразу прошу прощения за глупый вопрос :oops:
недавно работаю с Firebyrd, и столкнулся с проблемой upper(русских букв), нашёл в нете решение этой проблемы но там нужно чтобы поле которое я пытаюсь upper-нуть было в кодировке windows 1251, сейчас у этого поля стоит "кодировка" NONE, так вот вопрос - не повредит ли базе если я изменю в свойствах домена этого поля кодировку (в таблице уже 250тыс. записей)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 май 2006, 09:41

копируй данные. только начал работать, уже ковыряешь системные таблицы - заковыряешь БД, будешь потом мучиться.
лучше создай базу еще раз, из скрипта, сразу в win1251. и перекинь туда данные.

v6y
Сообщения: 78
Зарегистрирован: 12 мар 2005, 17:45

Re: Изменение кодировки "на ходу"

Сообщение v6y » 04 май 2006, 10:18

igrok писал(а):Сразу прошу прощения за глупый вопрос :oops:
недавно работаю с Firebyrd, и столкнулся с проблемой upper(русских букв), нашёл в нете решение этой проблемы но там нужно чтобы поле которое я пытаюсь upper-нуть было в кодировке windows 1251, сейчас у этого поля стоит "кодировка" NONE, так вот вопрос - не повредит ли базе если я изменю в свойствах домена этого поля кодировку (в таблице уже 250тыс. записей)
Можно привести через cast к нужной кодировке (FB 1.5):

Код: Выделить всё

select 
 upper(
   cast(russian_field as varchar(128) character set win1251)
 ) 
from table
Для поиска:

Код: Выделить всё

select * from table
where
 upper(
   cast(russian_field as varchar(128) character set win1251)
 ) 
 like cast(%СТРОКА ПОИСКА%' as varchar(16) character set win1251)

DS
Сообщения: 41
Зарегистрирован: 17 фев 2005, 16:54

Сообщение DS » 04 май 2006, 21:01

Думаю можно еще создать новое поле с нужной кодировкой и перелить в него данные, потом старое грохнуть, а новое переименовать в старое...

igrok
Сообщения: 9
Зарегистрирован: 13 янв 2006, 16:24

Сообщение igrok » 09 май 2006, 09:44

Спасибо всем кто откликнулся :wink:

Ответить