Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Case sensitivity в запросе [D7, MS Access]


Draught ©   (2007-03-22 18:46:00) 

В таблице есть записи, требуется сделать выборку с определенными условиями, вроде все просто:
select * from table
where name='ООО "Тоннель"'
но, все дело в том, что в таблице существуют записи с name=ООО "ТОННЕЛЬ"- и это не ошибка, это действительно 2 разных названия, причем даже юридически оформленых...

Как сделать выборку с учетом регистра?


Draught   (2007-03-22 20:18:00) [1]


> Seek

Спасиб, глянем про seek :)


sniknik   (2007-03-22 20:14:00) [2]

> а реализовать его кроме как используя Filter и Filtered, я больше не представляю :(
Seek

но там нужны изменения в методах/логике работы. в хелпе по Seek указаны нужные для режима настройки.
зато быстрее этого для "быстрого поиска" попросту не бывает.


Draught   (2007-03-22 20:07:00) [3]

гыыыыыыыыыыыы... бывает :)
БД нормализована, просто пользователи желают видеть быстрый поиск с клавиатуры, а реализовать его кроме как используя Filter и Filtered, я больше не представляю :(


sniknik   (2007-03-22 20:03:00) [4]

опс... на [13] внимания не обращайте, сам както пропустил второй абзац [10] ;(


sniknik   (2007-03-22 20:01:00) [5]

> ... а дальше уже поиск по справочнику...
ну раз он у тебя всетаки есть, этот ключ, то значит и компаниям присвоены уникальные числовые идентификаторы. так? ну а раз так, то кто мешает группировать по ним?


sniknik   (2007-03-22 19:59:00) [6]

> А что с ним не так?
ну он же судя по всему и группировку делает по строкам. а потом говорят это аксесс тормозит... нда. :)
а с точки зрения аксесс это две одинаковые строки.


Draught   (2007-03-22 19:54:00) [7]


> А что с ним не так?

А он так же регистронезависимый...


Draught   (2007-03-22 19:54:00) [8]

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

Про Group Byсейчас подумал - как раз Group Byработает уже после определения номера в справочнике, соответственно группирует уже не по имени, а по номеру... так что наверное Group By nameне понадобится, но все-таки на будущее ;)


Ega23   (2007-03-22 19:52:00) [9]


> Сразу встречный вопрос - а как быть с Group BY?


А что с ним не так?


Draught   (2007-03-22 19:49:00) [10]

ОООО, это совсем хорошо, спасиб, сейчас буду пробовать...
Сразу встречный вопрос - а как быть с Group BY?


Ega23   (2007-03-22 19:47:00) [11]


> sniknik ©   (22.03.07 19:45) [5]


Мда, долго [6] писал... :)


Ega23   (2007-03-22 19:47:00) [12]


> вопрос не о том чтобы сделать нечувствительный к регистру
> поиск, с этим в аксессе как раз без проблем, тут наоборот
> сделать его регистрозависимым...


Нормализация?


sniknik   (2007-03-22 19:45:00) [13]

+
вообще, лучше бы с названиями совсем не работать... а больше расчитывать на внутренний номер компании/записи, в смысле сделать искуственный ключ, автоинкремент например, и в дальнейшем строить запросы с его использованием...


sniknik   (2007-03-22 19:39:00) [14]

select * from table
where StrComp(name,'ООО "Тоннель"')=0


и кстати это очень плохо... индексы на вычислениях работать не будут (если они есть конечно...)
на большом обьеме надо бы сравнить, может вот так будет быстрее... (первое условие индекс использует)

select * from table
where name='ООО "Тоннель"' AND StrComp(name,'ООО "Тоннель"')=0


> [1], [2]
вопрос не о том чтобы сделать нечувствительный к регистру поиск, с этим в аксессе как раз без проблем, тут наоборот сделать его регистрозависимым...


Draught   (2007-03-22 19:37:00) [15]

хммм.. я либо чего-то недопонял, либо меня не поняли...
суть в том, что требуется получить из запроса:
select * from table
where name='ООО "Тоннель"'

записи, содержащие только ООО "Тоннель", без записей, содержащих ООО "ТОННЕЛЬ"- в базе они хранятся в различном регистре, в запросе же регистр не учитывается...


Jan   (2007-03-22 19:18:00) [16]

UCase («stringexpr»)

Returns a Variant (String) containing the specified string, converted to uppercase.

Syntax

UCase(string)

The required string argument is any valid string expression. If string contains Null, Null is returned.

Remarks

Only lowercase letters are converted to uppercase; all uppercase letters and nonletter characters remain unchanged.


Ega23   (2007-03-22 19:14:00) [17]

Upper.


Наверх

Титульная страница Поиск, карта сайта Написать письмо