Kuliev
14.08.2018 - 10:21
Доброго времени суток друзья.
Проблема с SQL запросом есть поиск по регулярному выражению
AND `u`.`access` REGEXP "(20)"
Как я понимаю по умолчанию происходит глобальный поиск. Но он мне не нужен. Как его отключить в запросе?
В документации MySQL ничего не нашел про модификаторы...
Kuliev
14.08.2018 - 15:10
Цитата (Valick @ 14.08.2018 - 13:43) |
чё? |
Если подробнее то есть ячейка в таблице с такими данными 1,2,4,20
Так вот при моем запросе если поставить 2 то из за глобального поиска в строке найдется 2, 20 причем 20 без 0 т.е. он будет думать что нашел 2
Поправил шаблон регулярки на (2+(?!0)) но тут беда MySQL не понимает данные конструкции PCRE
Мне нужно чтобы находилось точное совпадение, если 2 то 2 а не 2 и 20.
Надеюсь понятно объяснил.
Kuliev
14.08.2018 - 16:00
В общем решил проблему. Дело в том что MySQL не может использовать полноценно регулярки PCRE в Большей степени он заточен под POSIX
AND `access` REGEXP '(20)[[:>:]]'
Ларчик просто открывался )
Valick
14.08.2018 - 16:15
Цитата (Kuliev @ 14.08.2018 - 15:00) |
В общем решил проблему. |
Да нифига ты не решил, ты создал себе проблемы, как только нарушил первый закон нормализации и стал хранить в реляционной БД данные через запятую.
_____________
Стимулятор ~yoomoney - 41001303250491