Я хочу подсчитать количество различных магнитов, которые находятся в моей таблице.
Они определяются строкой примерно из 20 элементов, из которых меня интересуют первые пять.
У всех одинаковая схема:
mgn##
слово mgn, за которым следуют два числа. Я должен указать, что четвертый и пятый элементы являются целыми числами, так как в некоторых строках есть буквы после mgn.
До сих пор я пробовал разные запросы, просто гадал в воздухе.
mysql> SELECT DISTINCT(SUBSTRING(magnet, 1, 5)) FROM magcom WHERE magnet LIKE '%mgn\d\d%';
mysql> SELECT DISTINCT(SUBSTRING(magnet, 1, 5)) FROM magcom WHERE magnet LIKE '%mgn##%';
Это дает сообщение empty set
.
Любая помощь будет оценена.
Используйте RLIKE
:
WHERE magnet RLIKE 'mgn[0-9]{2}'
Если вы хотите совпадение только в начале строки:
WHERE magnet RLIKE '^mgn[0-9]{2}'
Спасибо. Это сработало. Однако можно ли сделать то же самое, но с учетом того, что некоторые из них могут иметь только один номер? Это будет что-то вроде '^mgn[0-9]{2}' AND '^mgn[0-9]{1}', я полагаю, но тогда SUBSTRING неуместен.