Помощник
|
Поиск по части текстового поля в числовом диапозоне, Можно ли с помощью REGEXP? |
gaaarfild
|
Сообщение
#1
|
||
|
|
||
|
|||
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
|
Сообщение
#3
|
|
Это так клево!!! =) Хоть объясни чуток! =)
И, кстати, можно еще сделать так, чтобы часть после второго дефиса тоже можно было задать? Всегда двухзначное. Это год. |
|
|
ZiTosS |
15.7.2010, 8:42;
Ответить: ZiTosS
Сообщение
#4
|
|
gaaarfild, ладно
В условии я столбец данных привожу к нужному нам виду, а именно оставляю те цифры, которые ты просил. Конструкция кода, который ты привёл позволяет это сделать. А так же слова: "Иногда вместо А может быть ОС." Теперь о запросе: 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
|
Сообщение
#5
|
|
Преогромнейшее спасибо. =)
|
|
|
ZiTosS |
16.7.2010, 14:30;
Ответить: ZiTosS
Сообщение
#6
|
|
gaaarfild, всегда рад помочь Тему можно закрывать?
|
|
|
gaaarfild
|
Сообщение
#7
|
|
|
Да. =)
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
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 |
Текстовая версия | Сейчас: 29.3.2024, 16:21 |