Mysql: найдите строки, где значение столбца заканчивается определенной подстрокой

У меня есть столбец url, где все значения являются URL-адресами. Я пытаюсь обновить значение другого столбца, где когда-либо вышеупомянутый URL-адрес заканчивается на .pdf.

Может ли кто-нибудь помочь мне с этим? Я не нашел здесь ответа на SO.

Ответ 1

Я мог бы упростить... но на основе вашего описания LIKE решить вашу проблему?

UPDATE YourTable
SET DifferentColumn = 'NewValue'
WHERE Url LIKE '%.pdf'

Ответ 2

Вы можете использовать условие LIKE с личным шаблоном. %.pdf означает, что столбец должен заканчиваться на .pdf

UPDATE mytable
SET newcolumn = 'PDF found'
WHERE yourcolumn LIKE '%.pdf'

В качестве альтернативы вы можете использовать функцию right()

UPDATE mytable
SET newcolumn = 'PDF found'
WHERE right(yourcolumn,4) = '.pdf'

Ответ 3

В предложении WHERE используйте что-то вроде LOCATE('.pdf',url) > 0, чтобы идентифицировать интересующую запись.

Как указано, это даст вам любой URL-адрес, содержащий ".pdf" в строке...

Если вы определенно хотите, чтобы ".pdf" был в конце, вы также можете попробовать:

LOWER(RIGHT(url,4)) = '.pdf'

Я бы использовал LOWER или UPPER для решения любых проблем.

Вы также можете использовать LIKE %.pdf (опять же, обратите внимание на проблемы с верхним/нижним регистром), как было предложено другими.

Ответ 4

Итак, похоже, что вы ищете параметр like.

например:

SELECT column(s) FROM table WHERE URL LIKE '%.pdf'

Или вы можете обновить с помощью

UPDATE table SET column = value, ..., WHERE URL LIKE '%.pdf'

.% похоже на высказывание чего-либо до того, как .pdf это htis case.

Надеюсь, что это поможет.