Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Описание спецсимволов для LIKE в ADO ? / 20 сообщений из 20, страница 1 из 1
13.01.2004, 16:25
    #32374749
Описание спецсимволов для LIKE в ADO ?
Господа, никто не подскажет url в msdn или еще где, с описанием всевозможных спецсимволов, когда используется LIKE в WHERE.
Раньше для коннекта из проги на VB6 к бд Access использовал DAO, там все было понятно, полное соответствие оператору Like в VB.
Сейчас вместо DAO использую ADO.

Заранее спасибо.
Иван Абрамов, программист, CSBI.
http://adanalysis.narod.ru - моя программа для выбора авто.
...
Рейтинг: 0 / 0
13.01.2004, 16:26
    #32374752
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
Синтаксис SQL ANSI 92
% = *
? = _ (если не ошибаюсь)
...
Рейтинг: 0 / 0
13.01.2004, 16:47
    #32374791
Описание спецсимволов для LIKE в ADO ?
Немного не так.

DAO ADO
* %
? _

а вот дальше?

что вместо #, !
^ - как в MS SQL Server - не работает.

Вообщем, нужен url к полному описанию.
...
Рейтинг: 0 / 0
13.01.2004, 16:49
    #32374795
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
из справки

Сравнение языка запросов Microsoft Jet SQL и ANSI SQL

Ядро базы данных Microsoft Jet SQL в основном совместимо с ANSI-89 Level 1. Однако некоторые возможности языка запросов ANSI SQL не реализованы в Microsoft Jet SQL. В выпуске Microsoft Jet версии 4.X для поставщика Microsoft OLE DB для Jet реализовано больше синтаксиса ANSI-92 SQL. Аналогично, язык запросов Microsoft Jet SQL содержит зарезервированные слова и возможности, не поддерживаемые языком ANSI SQL.

Основные различия
Языки Microsoft Jet SQL и ANSI SQL имеют разные зарезервированные слова и типы данных. Дополнительные сведения см. в разделах Зарезервированные слова языка SQL ядра базы данных Microsoft Jet и Эквивалентные типы данных ANSI SQL. При использовании поставщика Microsoft OLE DB для Jet с версией Jet 4.X существует несколько дополнительных зарезервированных слов.
Другие правила применяются для конструкции Between...And, которая имеет следующий синтаксис.
выражение1 [NOT] Between значение1 And значение2

В языке Microsoft Jet SQL значение1 может быть больше, чем значение2; в языке ANSI SQL значение1 должно быть меньше значения2 или равно ему.

В языке Microsoft Jet SQL при использовании оператора Like поддерживаются как подстановочные знаки языка ANSI SQL, так и подстановочные знаки, относящиеся к Microsoft Jet. Невозможно совместно использовать подстановочные знаки ANSI и Microsoft Jet. Допускается использовать только один набор знаков, их нельзя смешивать. Использование знаков языка ANSI SQL разрешено только с ядром Jet версии 4.X и с поставщиком Microsoft OLE DB для Jet. При попытке использования подстановочных знаков языка ANSI SQL с приложением Microsoft Access или объектами DAO они будут трактоваться как литералы. Обратное верно при использовании поставщика Microsoft OLE DB для Jet и ядра Jet версии 4.X. Символ соответствия Microsoft Jet SQL ANSI SQL
Любой текстовый символ ? знак подчеркивания (_)
Любое количество символов * %


В языке Microsoft Jet SQL меньше ограничений. Например, разрешается производить группировку и сортировку по выражениям.
Язык Microsoft Jet SQL поддерживает более производительные выражения.
Расширенные возможности языка Microsoft Jet SQL
Язык Microsoft Jet SQL обладает следующими расшиpенными возможностями.

Инструкция TRANSFORM обеспечивает поддержку перекрестных запросов.

Существуют дополнительные статистические функции SQL, такие как StDev и VarP.
Для определения параметров запроса используется описание PARAMETERS.

Возможности языка ANSI SQL, не поддерживаемые в языке Microsoft Jet SQL
Язык Microsoft Jet SQL не поддерживает следующие возможности языка ANSI SQL.

Ссылки в статистической функции DISTINCT. Например, в языке Microsoft Jet SQL невозможно использовать конструкцию SUM(DISTINCT имя_столбца).
Использование предложения LIMIT TO nn ROWS для ограничения числа строк, возвращаемых запросом. Для подобного ограничения можно использовать только предложение WHERE.
...
Рейтинг: 0 / 0
13.01.2004, 16:51
    #32374800
Описание спецсимволов для LIKE в ADO ?
То есть все так, сорри, Темный, и спасибо.
Но нужна полная картина.
...
Рейтинг: 0 / 0
13.01.2004, 16:55
    #32374811
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
описание символов и примеров LIKE бери из справки к MS SQL серверу

[ ] Any single character within the specified range ([a-f]) or set ([abcdef]).
(WHERE au_lname LIKE '[C-P]arsen' finds author last names ending with arsen and
beginning with any single character between C and P, for example Carsen, Larsen,
Karsen, and so on.)

[^] Any single character not within the specified range ([^a-f]) or set
([^abcdef]). (WHERE au_lname LIKE 'de[^l]%' all author last names beginning with
de and where the following letter is not l.)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
LIKE '5[%]'           5 % 
LIKE '[_]n'           _n 
LIKE '[a-cdf]'         a, b, c, d, or f 
LIKE '[-acdf]'           -, a, c, d, or f 
LIKE '[ [ ]'               [ 
LIKE ']'                  ] 
LIKE 'abc[_]d%'               abc_d and abc_de 
LIKE 'abc[def]'          abcd, abce, and abcf 



и т.д.
...
Рейтинг: 0 / 0
13.01.2004, 16:58
    #32374817
Описание спецсимволов для LIKE в ADO ?
Спасибо, Хам, но, опять же в твоей цитате упоминается лишь *(%) и ?(_).
А как на счет #, !, \, [] ?
...
Рейтинг: 0 / 0
13.01.2004, 17:03
    #32374825
Описание спецсимволов для LIKE в ADO ?
описание символов и примеров LIKE бери из справки к MS SQL серверу

Да, я так и сделал.
Но, к удивлению обнаружил, что маски с ^ не работают, а с ! работают. Каша какая-то получается, вот и спросил.
...
Рейтинг: 0 / 0
13.01.2004, 17:10
    #32374836
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
В БОЛ есть mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\vdtsql.chm::/dvconusingwildcardcharacters.htm]статья, которая называеться Wildcard Characters - там про ! ничего не сказано.
Покажи свои маски
...
Рейтинг: 0 / 0
13.01.2004, 17:20
    #32374848
Описание спецсимволов для LIKE в ADO ?
В БОЛ есть mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\vdtsql.chm::/dvconusingwildcardcharacters.htm]статья, которая называеться Wildcard Characters - там про ! ничего не сказано.
Совершенно согласен.
! - это один из спецсимволов VB Like и DAO LIKE

Вот кусок sql - строки
WHERE Phone1 LIKE '([0-9][0-9][0-9])[!2]%'

А если написать так WHERE Phone1 LIKE '([0-9][0-9][0-9])[^2]%'
то результат выдается неверный.

Что ж получается, все спецсимволы сходны с MSSQL, кроме !
Что за казус?
...
Рейтинг: 0 / 0
13.01.2004, 17:38
    #32374877
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
и что тебе выдает WHERE Phone1 LIKE '([0-9][0-9][0-9])[^2]%'
по идеи должен выдать первые три символа - цифры, 4-ый - не двойка

З.Ы.
А что будет выдавать WHERE Phone1 LIKE '([0-9][0-9][0-9])[134567890]%'
...
Рейтинг: 0 / 0
13.01.2004, 17:46
    #32374886
Описание спецсимволов для LIKE в ADO ?
и что тебе выдает WHERE Phone1 LIKE '([0-9][0-9][0-9])[^2]%'
по идеи должен выдать первые три символа - цифры, 4-ый - не двойка

Совершенно согласен.

Но выдадтся записи где первые три цифры (которые заключены в круглые скобки) а потом ДВОЙКИ (а не не двойки), далее не важно.

А вот WHERE Phone1 LIKE '([0-9][0-9][0-9])[!2]%' работает полностью корректно. Т.е. спецсимвол ^ работает неправильно, а ! правильно. В то время как все остальные спецсимволы взяты из синтаксиса MSSQL. Казус!
...
Рейтинг: 0 / 0
13.01.2004, 17:52
    #32374897
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
проверил на MS SQL
WHERE (вв LIKE '[0-9][0-9][0-9][^2]%')
рабоает правильно и возращает все записи за исключением 2

Давай разбираться откуда и кчему запускаешь запрос и почему именно ANSI SQL92
...
Рейтинг: 0 / 0
13.01.2004, 18:01
    #32374918
Описание спецсимволов для LIKE в ADO ?
А что будет выдавать WHERE Phone1 LIKE '([0-9][0-9][0-9])[134567890]%'
Выдает все правильно, т.е. 6-ой символ не двойка.
...
Рейтинг: 0 / 0
13.01.2004, 18:02
    #32374925
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?
...
Рейтинг: 0 / 0
13.01.2004, 18:05
    #32374935
Описание спецсимволов для LIKE в ADO ?
Из проги на VB6 при помощи ADO 2.5 идет запрос к бд формата MS Access 2000.
...
Рейтинг: 0 / 0
13.01.2004, 18:07
    #32374939
Описание спецсимволов для LIKE в ADO ?
ну а дальше объясни: почему именно АНСИ 92. Откуда оно взялось при работе VB6 с акесом (версия бд)?

Потому что используется ADO, а не DAO.
Спецсимволы * и ? и # не работают просто наглядно.
...
Рейтинг: 0 / 0
13.01.2004, 18:20
    #32374959
Описание спецсимволов для LIKE в ADO ?
проверил на MS SQL
WHERE (вв LIKE '[0-9][0-9][0-9][^2]%')
рабоает правильно и возращает все записи за исключением 2


На MS SQL - то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.
...
Рейтинг: 0 / 0
14.01.2004, 09:15
    #32375208
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Описание спецсимволов для LIKE в ADO ?
>На MS SQL - то наверняка все правильно будет работать, а ты попробуй посредством ADO к бд Access2000. Драйвер (провайдер) сов. другой.


Для АДО (при работе с mdb) надо применять % и _. Для отрицания ! (оператор сравнения такой же как < >) ^ - этот знак для работы с mdb (формат Акес2002+ANSI SQL 92) и MS SQL.
Хотя действительно можно запутаться и в справке по этому поводу - тишина.
...
Рейтинг: 0 / 0
14.01.2004, 12:27
    #32375515
Описание спецсимволов для LIKE в ADO ?
А как конвертировать числовое поле в текстовое, чтобы использовать с LIKE?

В DAO я бы написал так
WHERE CSTR(NumericField1) LIKE '*51*'

А в ADO (при коннекте к бд MSAccess2000) как?
Что-то типа WHERE ...NumericField1... LIKE '%51%'

Заранее спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Описание спецсимволов для LIKE в ADO ? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]