Меньше или больше mysql regexp

222
23 августа 2017, 18:38

Здравствуйте. Вытаскиваю записи с применением regexp. Можно ли как то выбрать все записи значение поля которого меньше или равно условию regexp. В моем случае это число. Сразу скажу что в моем случае без regexp не обойтись. Число завернуто в кучу символьного мусора.

Сейчас так:

data REGEXP 'year\\\|2017\\\|'

Содержание ячейки в бд такое:

||year|2012||year_url|<a href="/year/2012/" >2012</a>||
Answer 1

Mysql regexp возвращает только 1 или 0 -- совпала ли строка с шаблоном, поэтому сравнивать какие-нибудь значения с результатом regexp не имеет смысла. Но если строки в data отформатированы одинаково, то вы можете сравнить их фрагменты:

create table `foo` (
    `id` int unsigned not null auto_increment,
    `data` varchar(255) not null,
    primary key (`id`)
)
engine MyISAM;
insert into `foo` (`data`)
values
    ('||year|1985|bar|baz'),
    ('||year|2012||year_url|2012||'),
    ('bad data'),
    (''),
    ('||year|2017|...');
select *
from `foo`
where
    `data` regexp '^\\|\\|year\\|[[:digit:]]{4}'
    and strcmp(substr(`data`, 8, 4), '2012') < 1;

Тут я выбрал все записи, у которых data соответствует шаблону и фрагмент строки с годом больше или равен 2012.

Общая идея заключается в том, что вам следует сперва распарсить строку с датой. Если вы планируете использовать эту дату в запросах приложения (а не для отладки, например, или каких-то разовых операций), то вам следует пересмотреть структуру таблицы. Даты можно извлечь и поместить их в отдельные столбцы. Тогда по ним можно будет построить индексы и выбирать данные эффективно.

READ ALSO
Как программировать микроконтроллеры? [требует правки]

Как программировать микроконтроллеры? [требует правки]

Здравствуйте, решил развиваться по теме программирования микроконтроллеровДруг будет заниматься инженерией, а я - программированием

210
cannot bind ‘T’ lvalue to ‘T&amp;&amp;’

cannot bind ‘T’ lvalue to ‘T&&’

Почему я не могу сделать так?

220
Контейнер deque в STL c++

Контейнер deque в STL c++

Я начал изучения библиотеки STL и нашел такой интересный контейнер, как deque, но я не понял, в чем его преимущество, если можно заменить его другими...

444
установить программу на удалённой windows машине

установить программу на удалённой windows машине

Добрый день! Не могу сообразить как загуглить даже) Подскажите пожалуйста в каком направлении копать? Хочу в доменной сети (может это и не важно)...

262