主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档:2002.07.25;
下载:[xml.tar.bz2];

向下

InterBase中的UPPER 找到类似的分支


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.
Если ты не хочешь получить последовательность

香蕉
黄瓜
安娜
Ваня
Fedja

А хочешь получить:

安娜
香蕉
Ваня
黄瓜
Fedja

то никакая 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 /* 越南, 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.61 MB
时间:0.027 c
1-81244
瓦内克
2002-07-14 19:13
2002.07.25
发展


1-81358
alxx
2002-07-13 18:54
2002.07.25
撤消到RxRichEdit


14-81465
MIFI
2002-06-28 09:27
2002.07.25
脚本中的Openfile


1-81240
安德鲁·Ch。
2002-07-13 21:11
2002.07.25
问题是在Object Pascal上...


1-81371
撒旦
2002-07-14 03:33
2002.07.25
Delphi中的Dos字符





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский