Как вы запрашиваете строки с регулярным выражением, которое включает в себя значения столбцов - PullRequest
2 голосов
/ 07 февраля 2020

У меня есть таблица, в которой идентификаторы (XXXXX- 065 -00) должны совпадать с делением ( 65 ). Я хотел бы запросить все строки, которые не совпадают.

Кажется, что работает SQL, но есть ли лучший или более эффективный способ сделать это?

select id,division,identifier from table where identifier not REGEXP '.....-'+division+'-..'

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете concat() строка регулярного выражения:

where identifier not regexp concat('^.{5}-', lpad(division, 3, '0'), '-..$')

Обратите внимание, что в MySQL + добавлено число c (оно не выполняет объединение строк, как в SQL Например, сервер).

Другие замечания:

  • вам, вероятно, нужно дополнить division '0' с, чтобы оно имело ровно 3 символа

  • Я добавил ^ / $, чтобы сопоставить регулярное выражение во всей строке, а не выполнять частичное сопоставление, так как это, кажется, то, что вы хотите

  • Вы можете использовать квантификаторы: .{5} обозначает .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...