2016-11-23 6 views
2

У меня есть база данных, где я храню код, который является implode ("|", $ array) различных кодов. Таким образом, результаты будут что-то вроде:Регулярное выражение mySql в выражении WHERE

  • 100 | 5100 | 510
  • 100 | 5200 | 510
  • 410 | 5200 | 520
  • 100 | 790 | 5100 | 320

Я хочу написать регулярное выражение для поиска mySQL для совпадений с PHP ... У меня может быть что-то вроде 100 | * | 510, чтобы показать мне как 100 | 5100 | 510, так и 100 | 5200 | 510. Это RegEx работает в PHP:

/100\|(?:.*)\|510/

Но он не работает в MYSQL. Я нашел ответы, которые: не работает, так что если я удалю, что и использовать

/100\|.*\|510/

т.е. запрос является: SELECT * FROM tra_amounts WHERE coa_codes REGEXP «/ 100 \ |. * \ | 510/"

Показаны все результаты из таблицы.

Как написать RegEx для соответствия некоторым частям кода, оставив другие части кода в качестве подстановочного знака?

Спасибо!

+0

Вы можете сделать '100 \ | [0-9] + \ | 510', что позволит любое число посередине. В ваших примерах не должно быть сопоставлено '100 | 790 | 5100 | 320'? – chris85

ответ

1

Вы слышали о операторе MySQL LIKE? Нечто подобное могло бы быть то, что вы имеете в виду:

SELECT * 
FROM yourTable 
WHERE someCol LIKE '100|%|510; 

Предполагая, что someCol было 100|5100|510 и 100|5200|510 в качестве данных, этот запрос будет возвращать оба этих записей.

+0

Отлично работает, спасибо! –

Смежные вопросы