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

Вниз

чувствительность к регистру в SQL запросе...   Найти похожие ветки 

 
AntonUSAnoV   (2008-01-12 16:39) [0]

Как сделать чтобы SQL запрос был не чувствителен к регистру ?


 
sniknik ©   (2008-01-12 16:44) [1]

ничего не делать. запрос и так не чувствителен к регистру!.
вот с данными хуже..., но и тут для многих sql серверов можно ничего не делать. главное выбрать правильный.


 
Anatoly Podgoretsky ©   (2008-01-12 17:01) [2]

> sniknik  (12.01.2008 16:44:01)  [1]

Не совсем так, можно постараться сделать чувствительным.
Но автор явно что то перепутал.


 
__!ERIX_   (2008-01-12 17:05) [3]

дествительно...
Подскажите как сделать чувствительным. Плиз. Спасибо


 
Anatoly Podgoretsky ©   (2008-01-12 17:08) [4]

> __!ERIX_  (12.01.2008 17:05:03)  [3]

Ну например использовать Файрберд


 
__!ERIX_   (2008-01-12 17:26) [5]

а если делаетя запрос из delphi разве мне ФАЙРБЕРД поможет?


 
sniknik ©   (2008-01-12 17:31) [6]

какая разница из чего делать запрос? "чувствительность", и не только, проявляется в том в чем выполняется. ("из", "в" разные вещи однако)


 
AntonUSAnoV   (2008-01-12 17:35) [7]

Не, я вот о чём: при помощи компонента Query пишу запрос типа
select *
from xxx.db
where
fam like %name%
order by fam

переменной name присваивается значение edita, где пользователю позволено вводить как прописные так и строчные буквы. Так вот как можно при выборке из БД сделать её(выборку) не чувствительную к регистру.?


 
sniknik ©   (2008-01-12 18:52) [8]

> Не, я вот о чём:
так тебе на то и отвечали, во многих sql серверах регистр в данных в таких запросах не учитывается (по умолчанию), и делать ничего не надо, так сойдет. а вон firebird привели как счастливое исключение из этого правила.


 
AntonUSAnoV   (2008-01-12 18:58) [9]

А почему тогда у меня чувствителен:?


 
sniknik ©   (2008-01-12 19:10) [10]

ну наверное потому что ты используешь какойто регистрочувствительный движок...

открываешь справку по нему и ищешь функцию приведения строки к верхнему например регистру (нижний тоже пойдет), в запросе с fam используешь ее, а в программе name также приводишь к выбранному регистру при присвоении из edita. и все.


 
Anatoly Podgoretsky ©   (2008-01-12 22:05) [11]


> __!ERIX_   (12.01.08 17:26) [5]

Ты опять пытаешься мусорить в чужой ветке.
Задай вопрос в своей


 
Anatoly Podgoretsky ©   (2008-01-12 22:07) [12]

> sniknik  (12.01.2008 18:52:08)  [8]

Я вообще то говорил о запросах, а не о результатов запроса.
Для результатов, надо соответствующий Location


 
Anatoly Podgoretsky ©   (2008-01-12 22:08) [13]

Про базу и ее локализацию мы наверно не узнаем.


 
AntonUSAnoV   (2008-01-13 14:25) [14]

Не товарищи, всё проще: имеем приложение в делфи связанное через BDE с базой на Paradox . На форме лежит компонент Query SQL текст которого представляет собой следущее:
> select *
> from xxx.db
> where
> fam like %name%
> order by fam


значение для переменной name присваивается из edita, данные в БД хранятся с использованием и строчных и прописных букв, т.е. upper или lowercase я думаю не помогут...


 
sniknik ©   (2008-01-13 14:45) [15]

> т.е. upper или lowercase я думаю не помогут...
ну если ты так думаешь, то ... не думай!


 
AntonUSAnoV   (2008-01-13 15:35) [16]


> sniknik ©

а разве не так? ну допустим "Первенство" преобразуется в "первенство" а толку? в БД то хранится как "Первенство" ! ???


 
sniknik ©   (2008-01-13 16:39) [17]

> в БД то хранится как "Первенство" ! ???
ну так в условии значение поля тебе тоже сказали преобразовать в "первенство", вот и толк.
а ты прочитал ровно половину.


 
AntonUSAnoV   (2008-01-13 22:38) [18]

Нееее .. в этом то и суть что мне хранить в БД данные надо с использованием и прописных и литерных букв, потому что потом эти данные пересылаются в Excel, в качестве заголовков для смет, ведомостей и др., где надписи типа "первенство россии" или "ПЕРВЕНСТВО РОССИИ смотрятся некрасиво (в контексте оформления документа)...


 
sniknik ©   (2008-01-13 22:53) [19]

> Нееее .. в этом то и суть что мне хранить в БД данные надо с использованием ...
читать умеешь? никто тебя в базе данные менять не заставляет, говорили "в условии запроса", при сравнении. ->
> ... в запросе с fam используешь ее ...


 
AntonUSAnoV   (2008-01-13 23:08) [20]

Я гоню.. сорри, понял, только вот в самом SQL я не силён так что не знаю куда вставить lowercase, подскажите плиз..


 
AntonUSAnoV   (2008-01-13 23:11) [21]

нашёл, всё равно спасибо..


 
AntonUSAnoV   (2008-01-13 23:54) [22]

тут теперь вот какая ерунда : запрос выглядит так:
query1.SQL[0]:="select *";
    query1.SQL[1]:="from ":Теннис:sorevnovania.db"";
    query1.SQL[2]:="where";
    query1.SQL[3]:="(lower(name) like "%"+ename+"%")";

в ename буквы уже тоже lower, и вот что я заметил: если в значении поля name таблицы sorevnovania.db присутствует буква "Ч" то через SQL она не делается lower , запрос типа :"чемпионат" будет не успешен при значении поля name "Чемпионат", буква "Ч" не уменьшится...


 
AntonUSAnoV   (2008-01-14 00:00) [23]

Ха! причём если переделать всё на upper, то тоже самое только наоборот: "если в поле "Почему" , то при запросе "ПОЧЕМУ" тоже результата не будет, что за игнор буквы "Ч" ???


 
sniknik ©   (2008-01-14 00:02) [24]

"Ч" это ахиллесова пята BDE (и еще "Я" насколько помню)...,  спроси АП, он расскажет (я слышал от него). может быть.
в принципе, когда обсуждали, были советы "поиграть" ланг драйвером (подобрать), но я так думаю это еще один повод отказаться от устаревшего ради нового... и даже нефиг решать.


 
sniknik ©   (2008-01-14 00:13) [25]

хотя, счас проверил, у меня все нормально и с "Ч" и с "Я", приводятся к нижнему регистру, ленг драйвер правда ""ascii" ANSI" (это "чисто виндовая без преобразований"), естественно и вносить надо данные в виндовой кодировке. пробовал на таблице версии 7.0.

но лучше всетаки взять движок поновее.


 
Правильный_Вася   (2008-01-14 11:17) [26]


>  ленг драйвер правда ""ascii" ANSI"

для парадокса обычно используют pdox ansi cyrillic


 
sniknik ©   (2008-01-14 11:39) [27]

это просто "так исторически сложилось" т.к. парадоксные базы пришли из dos-а. никакой реальной необходимости сейчас поддерживать dos нет. (как и использовать парадокс)

кстати именно "pdox ansi cyrillic" и глючит с "Ч", и в том обсуждении про которое я упоминаю в [24] его как раз и советовали заменить на чтото другое, подобрать, например на аналог с dBase... пробуйте в общем, парьтесь, сами. я с вами в клуб мазохистов не записывался (хватило и того когда вынуждали по работе с ним сталкиваться).


 
AntonUSAnoV   (2008-01-14 15:42) [28]

Ну у меня и стоит "ascii" ANSI


 
sniknik ©   (2008-01-14 16:24) [29]

> Ну у меня и стоит "ascii" ANSI
и это не гарантия..., это же парадокс. тебе же говорят, подбирать нужно, + только ленгдрайвер это еще не все, там еще вроде в самой таблице зашита указание кодировки, надо чтоб совпадало(либо чтото приоритет имеет)...

блин, порыскал бы ты по дайджестам, тем каким лет так 5-6-7 уже, когда парадокс активно  обсуждался...


 
Anatoly Podgoretsky ©   (2008-01-14 16:52) [30]

Вопрос базы и движка автор усиленно игнорирует.
Но сейчас понятно, что движок БДЕ и языковой драйвер "ascii" ANSI, а это по определению нелюбовь к "Ч" и "я", не лечится.


 
sniknik ©   (2008-01-14 17:15) [31]

> а это по определению нелюбовь к "Ч" и "я", не лечится.
тем не менее у меня нормально... дома и на работе (перепроверил), файл один и тот же (слава богу не часто работать с форматом приходится... единственный).
почему так х.з.


 
Anatoly Podgoretsky ©   (2008-01-14 20:30) [32]

> sniknik  (14.01.2008 17:15:31)  [31]

Ты правда упоминал, что у тебя Д7, а по моей непроверенной информации эту проблему решили только в БДЕ поставляемой с 2006.


 
sniknik ©   (2008-01-14 20:39) [33]

точно, D7 но на работе 2006 ставил и снес потом (зря купили, 7-ки хватает) но дома то только D7 (на работе мог и остаться BDE новой версии).

скорее дело в таблице... чем ее создавали (прислана клиентами), и что там в заголовке прописано. (кстати посмотрел ленгдрайвер в таблице прописанный, старой програмкой, показывает "db866ru0" ... видать подбирали)


 
tomkat   (2008-01-14 22:19) [34]

сделай, пожалуйста, так
select *
from xxx.db
where
upper(fam) like upper(%name%)
order by fam

и регистр параметра %name% не будет иметь значения....
если я вопрос правильно понял :-)


 
sniknik ©   (2008-01-14 22:44) [35]

> если я вопрос правильно понял :-)
вопрос правильно, проблему нет.
перечитай еще, что у него с "Ч" происходит (вернее не происходит).


 
tomkat   (2008-01-15 16:17) [36]


> перечитай еще, что у него с "Ч" происходит (вернее не происходит).

понял, SQL сервером там и не пахнет :-(



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

Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.038 c
2-1200234821
cr@nk
2008-01-13 17:33
2008.02.10
Консольное приложение (пара вопросов)


2-1200307883
asdf
2008-01-14 13:51
2008.02.10
DBGrid


15-1199378064
БарЛог
2008-01-03 19:34
2008.02.10
Помогите вспомнить фильм


2-1200390226
koss
2008-01-15 12:43
2008.02.10
Главное меню


2-1200384521
Yury
2008-01-15 11:08
2008.02.10
richedit





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