Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

чувствительность к регистру в 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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.023 c
2-1200385986
asdf
2008-01-15 11:33
2008.02.10
DBGrid


6-1179909476
allucard
2007-05-23 12:37
2008.02.10
Как нажать кнопку в WebBrowser и выбрать раскрыв. список


15-1199964122
Дуболом
2008-01-10 14:22
2008.02.10
Вопрос про компилятор и предупреждения


15-1199786657
Lip
2008-01-08 13:04
2008.02.10
Разноцветный Label


15-1199935567
Cj
2008-01-10 06:26
2008.02.10
IDE зависает, причем так - конкретно...