Страница 1 из 1

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

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

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

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

Добавлено: 04 май 2006, 10:18
v6y
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)

Добавлено: 04 май 2006, 21:01
DS
Думаю можно еще создать новое поле с нужной кодировкой и перелить в него данные, потом старое грохнуть, а новое переименовать в старое...

Добавлено: 09 май 2006, 09:44
igrok
Спасибо всем кто откликнулся :wink: