Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Вниз

Почему не срабатывает UPPER?   Найти похожие ветки 

 
off   (2003-05-08 08:27) [0]

Мастера поскажите в чем проблема. Пишу IBQuery1.SQL.Text:="Select * from LICALL "+"where FIO LIKE UPPER("+""""+"%"+edit1.Text+"%"+""""+")";
По идее должно приводится к верхнему регистру, но не выходит.


 
Zacho   (2003-05-08 08:38) [1]


> off © (08.05.03 08:27)

О, снова этот вопрос ! Как минимум раз в неделю повторяется.
Главный совет: внимательно читать http://www.ibase.ru/devinfo/ibrusfaq.htm
Теперь коротко: если у поля установлен character set win1251 и не установлен collate pxw_cyrl то делать надо так:
SQL.Text:="SELECT * FROM LICALL WHERE UPPER(FIO COLLATE PXW_CYRL) LIKE "+AnsiQuotedStr("%"+AnsiUpperCase(Edit1.Text)+"%")


 
Danilka   (2003-05-08 08:39) [2]

может это тебе поможет:
http://www.ibase.ru/devinfo/ibrusfaq.htm
в середине пункт: "Uppercase русских букв"


 
Danilka   (2003-05-08 09:36) [3]

а вообще, думаю в данном случае дешевле будет делать так:
IBQuery1.SQL.Text:="Select * from LICALL "+"where FIO LIKE ("+""""+"%"+AnsiUpperCase(edit1.Text)+"%"+""""+")";


 
Danilka   (2003-05-08 09:37) [4]

блин, не дочитал:
Zacho © (08.05.03 08:38)

сорри
:))


 
off   (2003-05-08 09:52) [5]

Спасибо, в следующий раз буду внимательнее :-)


 
off   (2003-05-12 11:47) [6]

Так тут опять же такая проблема. Только ставлю чарсет в вин1251 так все работать престает. Выдает какое-то сообщение щас и не вспомню как звучит.


 
Zacho   (2003-05-12 11:53) [7]


> off © (12.05.03 11:47)

Телепатов нет :-)
Если хочешь получить ответ - пиши вопрос более подробно. Где ставишь ? Каким инструментом (компонентами и т.п.) пользуешься ? Как именно работать перестает ? И что именно (твоя программа, какой-либо инструмент типа IBConsole или IBExpert) ? Текст сообщения об ошибке ?
А вообще-то в http://www.ibase.ru/devinfo/ibrusfaq.htm все довольно подробно описано.


 
Соловьев   (2003-05-12 12:00) [8]

пользуюсь такой вот конструкцией и проблем не было...
...
where UPPER(Field1 collate PXW_CYRL) like UPPER(:Param1 collate PXW_CYRL)||"%"


 
off   (2003-05-12 12:04) [9]

Да факу я читал, правда ответа не нашел.
Чарсет ставлю, к примеру, при создании базы.
А сообщение следующее : "arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets"


 
off   (2003-05-12 12:08) [10]


> Соловьев © (12.05.03 12:00)
> пользуюсь такой вот конструкцией и проблем не было...
> ...
> where UPPER(Field1 collate PXW_CYRL) like UPPER(:Param1
> collate PXW_CYRL)||"%"

А чарсет какой? У меня стоит none.


 
Zacho   (2003-05-12 12:10) [11]


> off © (12.05.03 12:04)

Используешь IB Console ? Тогда это баг консоли. Попробуй сделать Unregister Database / Register Database. Или пользуйся чем-нибудь более другим, чем IB Console.
P.S. И все-таки учись задавать вопросы. Без информации, которую я у тебя спрашивал в Zacho © (12.05.03 11:53) - все попытки ответить - гадание на кофейной гуще.


 
off   (2003-05-12 12:38) [12]

А когда делаю UPPER(FIO COLLATE PXW_CYRL). Выдает сообщение
"Dinamic SQL Error
.................
Data type unknown
COLLATION PXW_CYRL is not valid for specified CHARACTER SET."
Charset - none (иначе выдает собщение см. > off © (12.05.03 12:04)).


 
Zacho   (2003-05-12 12:45) [13]


> off © (12.05.03 12:38)

А еще пишешь, что FAQ читал. Там же ясно написано - при character set none вместо UPPER нужно использовать UDF !
Если хочешь без UDF - ставь character set win1251.

> (иначе выдает собщение см. > off © (12.05.03 12:04)).

Ну я же просил уже - приведи более подробную информацию. Телепатов здесь нет. Единственное, что могу предположить - ты пользуешься IB Console. В ней есть баг. Попробуй другой инструмент.


 
off   (2003-05-12 13:18) [14]

А в принципе, как правильнее: ставить чарсет "none" или "win1251"?


 
Zacho   (2003-05-12 13:28) [15]


> off © (12.05.03 13:18)

Зависит от задачи и личных предпочтений :) Если собираешься хранить строковые данные в разных кодировках (и/или на разных языках) - правильнее none. Если в одной - есть плюсы и минусы и для при указании чарсета и при none. При явно определенном character set (и еще collate) для полей - работать проще.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
3-94711
Фагот
2003-05-07 12:01
2003.05.29
IBExpert


1-94841
Vulko
2003-05-19 20:42
2003.05.29
FileListBox


8-94977
shu_3d
2003-02-14 13:37
2003.05.29
Работа с CDAudio


14-95017
andrei
2003-05-13 11:09
2003.05.29
Web-server


1-94947
Андрей
2003-05-16 11:28
2003.05.29
Каим типом лучше определить такие данные, подскажите плиз





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский