2015-05-22 3 views
2

У меня есть строка /path/to/project/subdirectory/ и вам нужно найти строку, где path is /path/to/project/.Выберите строки, которые начинаются с строки

Как найти строки, где моя строка начинается с path?

Было бы противоположностью:

SELECT * FROM projects WHERE path LIKE "/path/to/%" 

Потому что у меня слишком много символов, не слишком мало.


Оба возвращают ноль строк:

SELECT * FROM projects WHERE path LIKE "/path/to/project/subdirectory/%" 
SELECT * FROM projects WHERE "/path/to/project/subdirectory/" LIKE (path+"%") 

ответ

3

Вы были близки с вашей второй попытки, но MySQL использует CONCAT() для конкатенации строк, а не +.

SELECT * 
FROM projects 
WHERE "/path/to/project/subdirectory/" LIKE CONCAT(path, '%') 

Вы также можете использовать

WHERE LOCATE(path, "/path/to/project/subdirectory/") = 1 
+0

Но когда же MySQL хочет двойные и опалить кавычки для строковых литералов? Здесь у вас есть обе версии; "/ path/to/project/подкаталог /" и "%". – jarlh

+0

MySQL позволяет использовать одиночные или двойные кавычки вокруг любого строкового литерала. Они просто должны соответствовать. Обычно я использую одинарные кавычки, потому что они согласуются с ANSI SQL. Но я вставил имя файла из вопроса и не стал его редактировать. – Barmar

+0

Я вижу. Спасибо за ответ! – jarlh

Смежные вопросы