В моей таблице есть такие данные, как
/my/path/project1/1.ft2.3
/my/path/project1/1.2.3/1.2.3.0/
/my/path/project1/1.2.3/1.2.3.0/
/my/path/project1/1.2.3/1.2.3.0/test
/my/path/project1/hash3.4.5.6
/my/path/project1/7.8.9
Мое намерение - использовать регулярное выражение для соответствия
/my/path/project1/1.ft2.3
/my/path/project1/hash3.4.5.6
/my/path/project1/7.8.9
Что такое хорошее регулярное выражение, которое в основном соответствует, учитывая путь - для соответствия <path>/<match>/
?
Этот я использую все совпадения
SELECT * FROM mytable WHERE path REGEXP '/my/path/project1/.*';
Следующее регулярное выражение будет работать для вашего прецедента:
^/my/path/project1/[^/]+$
Вы можете попробовать REGEXP '\/my\/path\/project1\/.*'
:
SELECT '/my/path/project1/1.ft2.3' REGEXP '\/my\/path\/project1\/.*' AS result;
+--------+
| result |
+--------+
| 1 |
+--------+
Чтобы выбрать значения, которые вы указали, попробуйте:
SELECT * FROM (
SELECT '/my/path/project1/1.ft2.3' AS f
UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/'
UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/'
UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/test'
UNION SELECT '/my/path/project1/hash3.4.5.6'
UNION SELECT '/my/path/project1/7.8.9'
) t
WHERE f REGEXP '\/my\/path\/project1\/(1\.ft2\.3|hash3\.4\.5\.6|7\.8\.9)'
;
Результат:
+-------------------------------+
| f |
+-------------------------------+
| /my/path/project1/1.ft2.3 |
| /my/path/project1/hash3.4.5.6 |
| /my/path/project1/7.8.9 |
+-------------------------------+