Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
3-81171
Cranium
2002-07-04 13:44
2002.07.25
IB и экспорт из txt


8-81382
McSimm
2001-12-27 15:19
2002.07.25
3DS MAX как OLE-сервер


1-81218
MARcoDEN
2002-07-14 10:33
2002.07.25
Как вытаскивать определенное значение из HTML страницы


3-81176
Still Swamp
2002-06-24 17:11
2002.07.25
Service + MSSql


3-81172
Вован
2002-07-04 04:49
2002.07.25
DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский