Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
ВнизUPPER в InterBase Найти похожие ветки
← →
Eagle (2002-07-03 11:15) [0]Как заставить функцию UPPER воспринимать русские буквы? У меня она просто возвращет строку без изменения
← →
Johnmen (2002-07-03 11:17) [1]При создании поля надо было указать соотв. COLLATE...
← →
Alexandr (2002-07-03 11:20) [2]collate выставить для поля.
Или Upper из UDF взять
см. www.ibase.ru
там про все это написано.
← →
Леша (2002-07-03 11:36) [3]Однозначно, надо поставить UDF.
← →
kaif (2002-07-03 12:29) [4]Все же нужно colleate ставить, а не UDF. Дело в том, что проблема без collate UPPER-ом не ограничивается.
Взгляни на упорядочивание ORDER BY.
Если ты не хочешь получить последовательность
абрикос
банан
огурец
Анна
Ваня
Федя
А хочешь получить:
абрикос
Анна
банан
Ваня
огурец
Федя
то никакая UDF тебя не спасет.
А collate все это сделает (плюс UPPER заодно)
← →
Desdechado (2002-07-03 13:20) [5]2 Kaif
если делать ORDER BY StrUpper( fld ), то результат сортировки будет правильный, правда индекс уже использоваться не будет (но это не всегда так уж плохо :)
← →
Johnmen (2002-07-03 13:30) [6]>Desdechado © (03.07.02 13:20)
>...правда индекс уже использоваться не будет ...
+ медленнее работает из-за неиспользования индекса и наличия вызова невстроенной ф-ии...
← →
Alexandr (2002-07-04 06:45) [7]А вот в Yaffil...
← →
Johnmen (2002-07-04 09:47) [8]>Alexandr © (04.07.02 06:45)
>А вот в Yaffil...
Что там ?
← →
Alexandr (2002-07-04 10:03) [9]ну образно говоря он повернулся передом к жителям стран бывшего СССР.
Yaffil 811
1) Новые кодировки
#define CS_WIN1255 91 /* Hebrew, Windows cp 1255 */
#define CS_WIN1256 92 /* Arabic, Windows cp 1256 */
#define CS_WIN1257 93 /* Baltic, Windows cp 1257 */
#define CS_WIN1258 94 /* Viet Nam, Windows cp 1258 */
#define CS_KOI8R 95 /* Russian KOI8, Windows cp 20866 */
#define CS_KOI8U 96 /* Ukrainian KOI8-U, Windows cp 21866 */
866 кодировка работает как надо, а не как 1251
2) Наведён порядок с размером индексов и cортирвкой (collate)
P.S. Сам я еще тольком на этот счет не смотрел, но должно быть лучше.
Во вторых там теперь
Индексы по выражениям (Expression Indexes) - это еще одна интересная возможность, так и не реализованная полностью в InterBase. Индексы по выражениям используются в тех случаях, когда необходимо обеспечить быстрый поиск или сортировку по значениям, вычисляемым на основе полей таблицы. Например, необходимо сделать выборку записей, имеющих поле типа дата, для определенного месяца. Необходимый индекс определяется следующим образом (на примере БД Employee.gdb из комплекта поставки InterBase 6):
CREATE INDEX employee_hire_date_month_idx
ON employee COMPUTED BY (EXTRACT(MONTH FROM hire_date));
Попробуем выполнить запрос и посмотрим на выбранный оптимизатором план:
SELECT * FROM employee
WHERE EXTRACT(MONTH FROM hire_date) = 1
PLAN (EMPLOYEE INDEX (EMPLOYEE_HIRE_DATE_MONTH_IDX))
Вычисляемое выражение должно полностью определяться значениями полей таблицы, индекс на основе, например, функции CURRENT_TIMESTAMP скорее всего, будет бесполезен, хотя Yaffil не запрещает использование подобных выражений. В вычисляемых выражениях нельзя использовать подзапросы. Очень интересные возможности появляются при использовании User-Defined Functions (UDF) в вычисляемых выражениях, с их помощью можно выполнять эффективный поиск по практически любому условию.
Индексы по выражениям реализованы в настоящее время только в тестовой версии Yaffil.
← →
Johnmen (2002-07-04 10:13) [10]Да, интересные сведения...
Я вот вчера скачал Yaffil821/ss/, теперь призадумался - стоит его ставить или нет. На машину разработки поставлю, а на машину в боевой эксплуатации (под FireBird"ом) стОит ?
Как думаешь ?
← →
Desdechado (2002-07-04 10:14) [11]2 Johnmen © (03.07.02 13:30)
Повторюсь, это на всегда плохо.
Если выборка небольшая (а большие просто редко нужны или явл. следствием неправильного проектирования БД), то разницы нет.
← →
Alexandr (2002-07-04 10:16) [12]ставить Yaffil821 стоит.
Но только на мошину разработки.
Там новые фичи активно добавляются и возможны глюки которые, правда быстренько исправляются...
А вместо Firebird лучше Yaffil800 поставить. Так сам разработчик рекомендует...
← →
Johnmen (2002-07-04 10:18) [13]Да и еще понравилось :
>...повернулся передом к жителям стран бывшего СССР.
>#define CS_WIN1258 94 /* Viet Nam, Windows cp 1258 */
>Desdechado © (04.07.02 10:14)
Не спорю...
← →
Alexandr (2002-07-04 10:20) [14]да, про Вьетнам смешно получилось...
← →
Johnmen (2002-07-04 10:21) [15]>Alexandr © (04.07.02 10:16)
Спасибо за рекомендации !
← →
Alexandr (2002-07-04 10:24) [16]www.interbase-world.com
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c