![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Case sensitivity в запросе [D7, MS Access]
Draught © (2007-03-22 18:46:00)В таблице есть записи, требуется сделать выборку с определенными условиями, вроде все просто:
select * from tableно, все дело в том, что в таблице существуют записи с name=ООО "ТОННЕЛЬ"- и это не ошибка, это действительно 2 разных названия, причем даже юридически оформленых...
where name='ООО "Тоннель"'
Как сделать выборку с учетом регистра?
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.