MySQL:查找列值以特定子字符串结尾的行

21

我有一列名为url的数据,其中所有的值都是url。我想要更新另一列的值,只要前面提到的url以.pdf结尾即可。

有人能帮我吗?我在SO上没有找到答案。


1
你可以使用 right() 函数。 - Matt Busche
如果您还尝试处理4个或更多字母的扩展名,例如.jpeg,则无法使用right()方法。 - Joshua Pinter
4个回答

43

我可能过于简化了...但根据您的描述,LIKE是否能解决您的问题?

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

我猜会有影响,唯一的问题是表非常大(几百万条记录),使用Like可能需要一些时间。我希望Mysql中有某种本地字符串函数,但看起来我只能使用Like... - Phil
好的,运行成功了,而且花费的时间也不算长,谢谢 :-) - Phil

9
您可以使用前置通配符的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'

6
在您的WHERE子句中,使用像LOCATE('.pdf',url)>0这样的语句来确定所需记录。
正如指出的那样,这将提供包含字符串“.pdf”的任何url...
如果您确切地希望“.pdf”在结尾处,您也可以尝试: LOWER(RIGHT(url,4))='.pdf' 我会使用LOWER或UPPER来处理任何大小写问题。
您还可以使用LIKE %.pdf(同样,请注意大小写问题),如其他人建议。

1
如果 url 具有不区分大小写的排序规则,您可以省略使用 LOWER - Rick James

2

看起来你正在寻找 like 参数。

例如:

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

或者您可以使用以下方式进行更新:

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

百分号(%)的意思就像在这种情况下点之前的任何东西都是.pdf。希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接