X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Поиск по части текстового поля в числовом диапозоне, Можно ли с помощью REGEXP?
gaaarfild
gaaarfild
Topic Starter сообщение 11.7.2010, 2:31; Ответить: gaaarfild
Сообщение #1


Как можно вытаскивать данные из БД с помощью регулярных выражений?

Есть поле в БД примерно такого содержания

316-A3446-10


при запросе необходимо вытащить данные, которые задаются диапазоном.

То есть интересует в данном выражении только часть после буквы А и до дефиса.

Например от 3446 до 3489. Запрос должен вытащить все варианты, в которых данная часть входит в данный диапазон, а остальная часть строки может быть какой угодно, но количество символов и тип их не изменяется. Кроме буквы А. Иногда вместо А может быть ОС.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 12.7.2010, 18:43; Ответить: ZiTosS
Сообщение #2


gaaarfild, вряд ли здесь потянет REGEXP он не умеет задавать диапазон чисел, он умеет искать в строке последовательности.
Вот тебе кустарный метод, работает xD
SELECT
*
FROM test WHERE SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(articul,'-',2),
'-',-1),
'OC',-1),
'A',-1)+0 BETWEEN 3446 AND 3489
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 13.7.2010, 17:37; Ответить: gaaarfild
Сообщение #3


Это так клево!!! =) Хоть объясни чуток! =)

И, кстати, можно еще сделать так, чтобы часть после второго дефиса тоже можно было задать? Всегда двухзначное.
Это год.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 15.7.2010, 8:42; Ответить: ZiTosS
Сообщение #4


gaaarfild, ладно :angry:

В условии я столбец данных привожу к нужному нам виду, а именно оставляю те цифры, которые ты просил. Конструкция кода, который ты привёл позволяет это сделать. А так же слова: "Иногда вместо А может быть ОС."

Теперь о запросе:
1) Запрос, как мы видим, обычный, вытаскиваем все поля из таблицы test с условием.
2) В условии я сравниваю целевое число преобразованное из строки, проверяю, попадает ли оно в диапазон.
3) Функция SUBSTRING_INDEX(str, delim, N) - возвращает подстроку строки str. Если параметр N имеет положительное значение, то SUBSTRING_INDEX() находит N-ое вхождение (отсчет слева) подстроки delim в строке str и возвращает всю часть строки, расположенную слева от подстроки delim. Если N имеет отрицательное значение, то находится N-ое вхождение (отсчет справа) подстроки delim в строке str и возвращается часть строки, расположенная справа от подстроки delim
4) Мне пришлось сделать аж 4 вложения данной функции, чтобы убрать всё лишнее.

Так что я:
1) Изначально - 316-A3446-10
2) Нахожу второй дефис "-" слева и возвращаю всю часть левее второго дефиса, то есть - 316-A3446
3) Нахожу первый дефис "-" справа и возвращаю всю часть правее этого дефиса, то есть - A3446
4) Далее я двумя вложениями удаляю также A и OC
5) Прибавляя к строке, в котрой находится число, 0 - я получаю число.

И, кстати, можно еще сделать так, чтобы часть после второго дефиса тоже можно было задать? Всегда двухзначное.
Это год.

Возможно, всё возможно. Делай это вторым условием через AND, так же вырезай, но тут получится либо без вложений, либо с одним вложением :)


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 15.7.2010, 21:12; Ответить: gaaarfild
Сообщение #5


Преогромнейшее спасибо. =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 16.7.2010, 14:30; Ответить: ZiTosS
Сообщение #6


gaaarfild, всегда рад помочь :angry: Тему можно закрывать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 16.7.2010, 16:56; Ответить: gaaarfild
Сообщение #7


Да. =)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Smmsearch.net - поиск самой дешевой накрутки в социальных сетях.
0 Professor7717 3271 13.8.2021, 19:53
автор: Professor7717
Открытая тема (нет новых ответов) Поиск кодера в команду. PHP, Pyton. На постоянку.
7 getsend_mw 2808 3.2.2021, 21:15
автор: getsend_mw
Открытая тема (нет новых ответов) Поиск копирайтера на игровую тематику
Поиск копирайтера на игровую тематику
4 a1ex777 1627 2.10.2020, 16:01
автор: AndreyBozhenko
Открытая тема (нет новых ответов) SmmBox - поиск, аналитика и отложенная публикация в соцсетях. Официально!
23 smmbox 11860 13.5.2020, 11:12
автор: smmbox
Открытая тема (нет новых ответов) Поиск, сбор информации, парсинг (недорого)
Предлагаю услуги по поиску, сбору информации, парсингу и т.д.
0 Kabardin 1334 11.3.2020, 14:59
автор: Kabardin


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:21
Дизайн