Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помгите составить регулярное выражение, .... ровно пять заданных символов. SQL. 
:(
    Опции темы
TheAviator
Дата 20.11.2004, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Собсно сабж.
Какой SQL - запрос позволяет отобразить записи с РОВНО пятью заданными символами в определенном поле?
Т.е., например, найти те поля, где есть РОВНО пять букв 'A' . Не больше.
PM MAIL WWW ICQ   Вверх
Vit
Дата 21.11.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Не уверен про MS Access, но попробуй что-нибудь типа:


Код

Select * From MyTable
Where MyFiled like '_____'



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
TheAviator
Дата 21.11.2004, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Цитата(Vit @ 21.11.2004, 17:12)
Не уверен про MS Access, но попробуй что-нибудь типа:


Код

Select * From MyTable
Where MyFiled like '_____'

Да. тип запроса такой в Акцессе катит, но я спрашивал о конкреном запросе для конкретного случая, т.е. конкретно шаблон для поиска РОВНО пяти цифр в поле.
Например, найти пять и более цифр будет в акцессе выглядеть так:
Select * From books
Where Name Like "*#*#*#*#*#*";

А вот РОВНО пять цифр???
PM MAIL WWW ICQ   Вверх
Vit
Дата 22.11.2004, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Код

Select * From Таблица1
Where a Like "#####";



Если пять любых букв то

Код

Select * From Таблица1
Where a Like "?????";




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
TheAviator
Дата 22.11.2004, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



ВИТ, ты опять не понял что я имею ввиду.

К примеру, запрос должен выбрать такую строку:

e1e2e3e4e5e (содержится ровно пять цифр)

но не должен выбрать
такую
e1e2e3e4e5e6e (шесть цифр)

как сам понимаешь, запрос типа Select * from books where name like "*#*#*#*#*#*"; выберет обе такие записи, а мне нужен такой запрос, который выберет только первую.

Это сообщение отредактировал(а) TheAviator - 22.11.2004, 11:24
PM MAIL WWW ICQ   Вверх
Vit
Дата 22.11.2004, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Такой запрос ИМХО невозможен даже на гораздо более развитых диалектах SQL, только вручную проходом по записям, а вообще надо при занесении данных озаботится о внесении их таким образом чтобы были поля поиска...

Впрочем одна мысль есть, толкьо не уверен что в MS Access есть соответтсвующие функции: в поле сначала заменить все буквы на пусто, потом получившееся число в строке конвертнуть в число и поставить условие чтоб было больше 9999 и меньше 100000


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
DENNN
Дата 22.11.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: нет
Всего: 43



Цитата
т.е. конкретно шаблон для поиска РОВНО пяти цифр в поле.

Насчет аксесса не знаю ( а читать документацию в лом smile ), но в других базах данных есть оператор, реализующий применение регулярного выражения к подаваемым на его вход данным (во как загнул! smile ).
То есть, если я хочу на MySQL использовать при выборке регулярное выражение для того, чтоб найти поля, в которых есть РОВНО ПЯТЬ ЦИФРр, то я пишу что-то примерно следующее.
Код

select field1 from my_table where field1=REGEXP '(?:(?:[^\d])*[\d]){5,5}';


Возможно регулярное выражение и далеко от совершенства, но как только речь заходит о рег.выражениях, то необъодимо читать документацию на используемый софт. Так, я сомневаюсь, что в приведенном примере MySQL поймет последовательность (?:, хотя без нее можно обойтись, но в продвинутых реализациях она может сильно ускорить обработку регулярного выражения.

P.S. навсякий случай: \d - означает любой символ, обозначающий цифру.
PM ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.3657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.