![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по SQL [D6, XP]
Neo © (2008-01-28 13:56:00)Товарищи, как сделать запрос SELECT то-то FROM того-то WHERE то-то нечувствитеьным к регистру?
ketmar (2008-01-28 17:34:00) [1]>[17] homm ©(28.01.08 15:14)
>Это башка. В ней находится мозг.
оптимист.
Amoeba (2008-01-28 17:28:00) [2]
> Neo © (28.01.08 15:03) [14]
>
>
> > вот как думаеш, что вернет функция UPPER(adum14) ? а UPPER(Adum14)
> > ?
>
>
> Конечно возвращает то, что должна возвращать - то же самое
> что при запросе ADUM14. т.е. это ф-ия уравнивает запросы
> adum14, Adum14 и ADUM14 единственно к верхнему регистру,
> т.е. к ADUM14. А вот если искать как раньше - получается
> что при запросах Adum14 и adum14 результаты иные, чем когда
> использовать UPPER...
Надо же быть таким дубом после того как тебе неоднократно все разжевали и в рот положили.
altatr (2008-01-28 17:09:00) [3]В моей программе работает так (компонент Query) может подойдет...
SQL.Add('SELECT NAME'); // по каким полям будем делать выборку
SQL.Add('FROM ":AUTOBASE:voditeli.dbf"'); // в какой базе данных и таблице будем искать
SQL.Add('WHERE');
SQL.Add('(UPPER (NAME)= "'+ f +'")') // сравниваем поле NAME с переменной f
Переменной f присвоить значение какогонибудь EDITa у которого в свойстве CharCase проставить ecUpperCase. Или самому писать все заглавными буквами. Какими будут буквы в поле NAME - всеравно. Программа будет видеть их все заглавными.
homm (2008-01-28 15:14:00) [4]> [14] Neo © (28.01.08 15:03)
Подними руки чуть выше туловища, начни сводить их вместе. Вскоре на их пути встретится некий шарообразный волосатый предмет. Это башка. В ней находится мозг. Попробуй использовать его при очередном фтыкании в одну единственную строчку кода из [7].
Помимо указанного способа можно еше указать формат регистронечувствительный для полей, по котрым производится поиск, или использовать функцию, специально-оговоренно-регистро-нечувствительную. Все зависит от возможностей твоего SQL сервера.
tomkat (2008-01-28 15:05:00) [5]
> А вот если искать как раньше
так не нада :-)
Anatoly Podgoretsky (2008-01-28 15:04:00) [6]> Neo (28.01.2008 14:37:12) [12]
Чукча не читатель.
Neo (2008-01-28 15:03:00) [7]
> вот как думаеш, что вернет функция UPPER(adum14) ? а UPPER(Adum14)
> ?
Конечно возвращает то, что должна возвращать - то же самое что при запросе ADUM14. т.е. это ф-ия уравнивает запросы adum14, Adum14 и ADUM14 единственно к верхнему регистру, т.е. к ADUM14. А вот если искать как раньше - получается что при запросах Adum14 и adum14 результаты иные, чем когда использовать UPPER...
tomkat (2008-01-28 14:46:00) [8]ты не вериш ?
ты попробуй !
вот как думаеш, что вернет функция UPPER(adum14) ? а UPPER(Adum14) ?
Neo (2008-01-28 14:37:00) [9]Товрищи, прога делается для бухов, у бухов там в полный финиш в смысле этих чертовых регистров.
> !!!! дак у тебя ВСЕ значения поля приводятся к верхнему
> регистру ! ВСЕ !!!
> и ты сравниваеш с образцом тоже в верхнем регистре ...
может оно итак, но только если брать запрос adum14, то будет искаться количество именно adum14. а надо чтобы все вместе - и adum14 и ADUM14 и Adum14.
Palladin (2008-01-28 14:29:00) [10]в сад
tomkat (2008-01-28 14:29:00) [11]
> Это же просто приводит к тому, что ищется в верхнем регистре
> и все
!!!! дак у тебя ВСЕ значения поля приводятся к верхнему регистру ! ВСЕ !!!
и ты сравниваеш с образцом тоже в верхнем регистре ...
Neo (2008-01-28 14:27:00) [12]> tomkat (28.01.08 14:12) [7]
> where upper(Request)=upper('ADUM14')
Это же просто приводит к тому, что ищется в верхнем регистре и все... а мне нужно чтобы искало и в нижнем и в верхнем и комбинированно,т.е. чтобы, скажем, запросы adum14, ADUM14 и Adum14 воспринимались одиннаково.
Sergey13 (2008-01-28 14:13:00) [13]> [5] homm © (28.01.08 14:05)
Лишь бы не фрикцию или фелляцию. 8-)
tomkat (2008-01-28 14:12:00) [14]
where upper(Request)=upper('ADUM14')
а вообще-то нада запрос с параметрами использовать
where upper(Request)=upper(:param)
Neo (2008-01-28 14:09:00) [15]нет, в том то и дело что чувствителен - запрос типа 'SELECT COUNT(*) FROM '+TabName+' WHERE '+Request+' = ADUM14' и такой же самый только в конце пишем скажем Adum14, дают разные результаты, которые правильны оба, поскольку в базе встречается и так и так пишут - и верхним и нижним регистром... вот и я хочу сдлать чтобы было нечувствительно к регистру. Оператор же LIKE находит похожее, но все равно учитывает регистр - уже проверил.
homm (2008-01-28 14:05:00) [16]> [4] Sergey13 © (28.01.08 14:01)
> Надо сделать инъекцию,
Может лучше сделать коньюкцию? %)
Sergey13 (2008-01-28 14:01:00) [17]> [0] Neo © (28.01.08 13:56)
Надо сделать инъекцию, переводящую и то и это к одному регистру.
tomkat (2008-01-28 14:01:00) [18]если ты имел ввиду, что не чуствительным к регистру значения ПАРАМЕТРОВ
то так и скажи :-)
tomkat (2008-01-28 13:59:00) [19]запрос вообще-то и так не чествителен к регистру
SELECT то-то FROM того-то WHERE =
select
...
from
....
where
.....
Palladin (2008-01-28 13:58:00) [20]чего-то like того-то