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

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

DAO ADO
* %
? _

а вот дальше?

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

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

Сравнение языка запросов 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
Описание спецсимволов для LIKE в ADO ?
    #32374800
То есть все так, сорри, Темный, и спасибо.
Но нужна полная картина.
...
Рейтинг: 0 / 0
Описание спецсимволов для LIKE в ADO ?
    #32374811
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
описание символов и примеров 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
Описание спецсимволов для LIKE в ADO ?
    #32374817
Спасибо, Хам, но, опять же в твоей цитате упоминается лишь *(%) и ?(_).
А как на счет #, !, \, [] ?
...
Рейтинг: 0 / 0
Описание спецсимволов для LIKE в ADO ?
    #32374825
описание символов и примеров LIKE бери из справки к MS SQL серверу

Да, я так и сделал.
Но, к удивлению обнаружил, что маски с ^ не работают, а с ! работают. Каша какая-то получается, вот и спросил.
...
Рейтинг: 0 / 0
Описание спецсимволов для LIKE в ADO ?
    #32374836
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В БОЛ есть mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\vdtsql.chm::/dvconusingwildcardcharacters.htm]статья, которая называеться Wildcard Characters - там про ! ничего не сказано.
Покажи свои маски
...
Рейтинг: 0 / 0
Описание спецсимволов для LIKE в ADO ?
    #32374848
В БОЛ есть 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
Описание спецсимволов для LIKE в ADO ?
    #32374877
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что тебе выдает WHERE Phone1 LIKE '([0-9][0-9][0-9])[^2]%'
по идеи должен выдать первые три символа - цифры, 4-ый - не двойка

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

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

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

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

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

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


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


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

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

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

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


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