Я читал mysql documentation about regexp, но выглядит как regexp может использоваться только как WHERE
фильтры для соответствия строкам в запросе SELECT
.Mysql: using regexp соответствует полям?
Im интересно, если можно извлечь матчи регулярного выражения в виде столбцов, например, если в моей таблице у меня есть текстовое поле SKU с:
+----------------+--------------+---------------+
|sku | product_name | [other fields]|
+----------------+--------------+---------------+
|ART-2830--107-70| Foo | |
|ART-2832--115-6 | Bar | |
+----------------+--------------+---------------+
было бы здорово, чтобы огонь выберите запрос, который соответствует регулярное выражение (ART-)([0-9]+)(--)([0-9]+)(-)([0-9]+)
, что дает мне выход:
+------+------------+-------+----------+
| type | collection | model | material |
+------+------------+-------+----------+
| ART | 2830 | 107 | 70 |
| ART | 2832 | 115 | 6 |
+------+------------+-------+----------+
Пожалуйста, обратите внимание, что type, collection, model and material
колонны нет в моей таблице, и являются лишь матчи выше регулярного выражения.
Возможно ли это?
p.s: Я знаю, что бы быть хорошей идеей, чтобы нормализовать эту таблицу, добавив столбец для каждого собственности мне нужно, но это структура я должен работать и я не могу изменить это в данный момент.
EDIT На всякий случай кому-то это нужно, я увидел это PostgreSql offer this function.
Так грустно, что это единственный способ. На данный момент гораздо лучше захватить данные из db, используя регулярное выражение, чтобы соответствовать строкам, а затем обрабатывать серверный сервер результатов. Если бы я мог создать другую таблицу для нормализации данных. – Strae
Postgresql предлагает эту функцию, я обновляю свой ответ – Strae