Использование оператора LIKE SQL для простого сопоставления URL - PullRequest
0 голосов
/ 14 апреля 2020

Можно использовать оператор SQL LIKE для сопоставления строки с или без завершающего слэ sh, как можно найти в типичном URL-адресе?

Пример.

// `table` contains a row where column `path` = "/my-path/"

SELECT * FROM table WHERE path = '/my-path/' // this will return the row above
SELECT * FROM table WHERE path = '/my-path' // this will NOT return the row (no trailing slash)

Есть ли способ использовать LIKE (или что-то отличное от оператора REGEX), чтобы он захватывал строку независимо от того, передаю я ее или нет /my-path/ или /my-path

SELECT * FROM table WHERE path LIKE '\/my-path\/?' // (borrowed regex syntax) this would grab a row path = '/my-path/' but would also grab a row with path = '/my-path' (no trailing slash)

В основном Я хочу настроить URL перенаправления, чьи записи хранятся в базе данных. Я передаю ему URL-путь (который может содержать или не содержать конечный знак sh), и возвращается соответствующая запись, игнорируя любые возможные конечные слэши.

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Используйте IN() для сравнения с двумя строками, а не для сопоставления с образцом.

SELECT * FROM table WHERE path IN ('/my-path/', '/my-path')
0 голосов
/ 14 апреля 2020

Используйте оператор LIKE и добавьте подстановочный знак% в конец ввода

select * from table1 where path like concat(YOURINPUTHERE,'%')
...