Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при использовании LIKE с UNICODE в IB/FB 
:(
    Опции темы
Паша Меньщиков
Дата 16.10.2003, 09:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет!
Есть БД, часть определения которой приведена ниже.
Код
SET SQL DIALECT 3;
SET NAMES UNICODE_FSS;
CREATE DATABASE 'C:\MyProjects\ENG\IBDB\AC011.GDB'
 USER 'SYSDBA' PASSWORD 'masterkey' PAGE_SIZE 8192
 DEFAULT CHARACTER SET UNICODE_FSS;

CREATE DOMAIN CH10 AS VARCHAR(10);
CREATE DOMAIN CH50 AS VARCHAR(50);
/* ... */
CREATE TABLE ROOMS (
 PRJCODE      INTEGER NOT NULL,
 ROOMNO       CH10 NOT NULL,
 NAME         CH50
 /* ... */
);

Возникает проблема при выполнении операторов вида
Код
SELECT * FROM ROOMS WHERE NAME LIKE 'Коридор%'

причем правый символ % может отсутствовать (поведение то же). При выполнении этого оператора сервер подвисает (испробовано на IB6, FB1, FB1.5). Если вместо 'Коридор' написать 'Coridor', запрос выполняется нормально. Запрос выполнялся нормально и тогда, когда DEFAULT CHARACTER SET был WIN1251. Запросы вида
Код
SELECT * FROM ROOMS WHERE UPPER(NAME) LIKE UPPER('КОРИДОР%')

(именно так: UPPER('от_больших_букв') - описано, кажется, в открытых фичах/багах FB1) вываливает все записи, где NAME написано в данном случае кириллицей.

Вопрос: лечится ли это как-то? Если лечится, просьба прояснить, как. Если нет, просьба кинуть идею, какой конструкцией можно заменить указанные операторы.

  Вверх
Akella
Дата 16.9.2004, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



у меня такая же проблема с частичным поиском.

Кусок из метаданных

Код

SET SQL DIALECT 1;

/* CREATE DATABASE 'C:\Program Files\Borland\Delphi7\Projects\BASE.GDB' PAGE_SIZE 4096

DEFAULT CHARACTER SET  */

/*  External Function declarations */



кажется кодовая страница не определена.
PM MAIL   Вверх
<Spawn>
Дата 18.9.2004, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



Ответ в этой теме


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
gray_k
Дата 20.9.2004, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Проблема скорее всего в том, что большинство клиентов с юникодом работать не умеет. В частности для очень популярного IBExpert поддержку юникода добавили меньше месяца назад, и как оно работает я ещё не смотрел, так что могу только посоветовать сменить кодировку или не пользоваться русским шрифтом.


--------------------
С уважением.
Gray.
PM MAIL   Вверх
Гость_Владимир
Дата 11.10.2004, 02:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Проще всего использовать кодировку NONE. Оно проще. А большие/маленькие буквы - хестко забить в программе.
  Вверх
Akella
Дата 11.10.2004, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



я делал по другому
1. Копировал таблицу в Paradox
или
2. Присваивал значение поля переменной а затем проверял сходство
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.