powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает UPPER() с русскими буквами в IB6
10 сообщений из 10, страница 1 из 1
Не работает UPPER() с русскими буквами в IB6
    #32071833
denipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает функция UPPER() с русскими буквами в IB6
Подскажите, пожалуйста, как решить эту проблему.
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32071854
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно достаточно UPPER(<FieldName> COLLATE PXW_CYRL) если win1251 у поля
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072199
denipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если не win1251?
И можно ли сменить charset для таблицы(поля), если можно, то как
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072234
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно создать новое поле, скопировать данные из старого в новое, старое удалить, новое переименовать :-).
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072413
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уверен, что там чарсет не win1251?
в IB6 есть ALTER COLUMN вроде, им и воспользуйся, либо можно в системных таблицах поправить
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072458
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобще-то разные в разных кодировках на символ разное кол-во байт выделяется. Так что, теоретически, могут быть проблемы со сменой кодировок.
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072464
denipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RE: ALL
Всем большое спасибо за помощь!
Я решил эту проблему следующим образом:
Создал аналогичную БД c default charset win1251
символьным полям задал COLLATE PXW_CYRL (может и не надо было)
запрос типа:
SELECT * FROM <table> WHERE UPPER(<field>) like '<value>'
(ежели <value> состоим из русских букв, то выдается ошибка:
Arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets)
надо делать так:
SELECT * FROM <table>
WHERE UPPER(<field>) like _win1251 '<value>'
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072676
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну насчет того, что ты сразу задал COLLATE - это зря, в PXW_CYRL берется 3 байта на символ, а применение практически только UPPER, в котором collation order можно задать в любой момент (как написано)
НАсчет же того, что не может конвертировать между чарсетами - так просто при коннекте надо было указать charset как win1251
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32072758
boss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была та же проблема.
Класс!
Поставил - UPPER(<FieldName> COLLATE PXW_CYRL) и все заработало!
...
Рейтинг: 0 / 0
Не работает UPPER() с русскими буквами в IB6
    #32073245
FAGIM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у меня все время даже при этих способах выдает приведенную ошибку и теперь у меня всюду чарсет NONE,
а UPPER заменил на WINAPI - шную CharUpper, работет кстати нисколько не медленне.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает UPPER() с русскими буквами в IB6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]