2013-03-11 16 views
10

私はすべての値がURLである列urlを持っています。私は上記のURLが.pdfで終わっている別の列の値を更新しようとしています。Mysql:列値が特定の部分文字列で終わる行を検索します

誰もがこれを手伝ってくれますか?私はここで答えを見つけていません。

+1

あなたは 'right()'関数を使うことができます –

答えて

19

私は単純すぎるかもしれません...あなたの説明に基づいてLIKEはあなたの問題を解決できますか?

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

私はそれが唯一のことは、テーブルが巨大で(数百万レコード)、Likeはおそらく時間がかかるということです。私はMysqlに何らかのネイティブの文字列関数が存在することを期待していましたが、私のようになっているようです。 – Phil

+0

それはうまくいきましたし、それほど時間がかかりませんでした:-) – Phil

+0

@Philあなたが探しているネイティブ関数は 'right()'です。 –

0

したがって、likeパラメータを探しているようです。

例えば

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

それとも、ある.PDFはhtisケースである前に何も言わよう

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

%で更新することができます。

これが役に立ちます。

7

先頭にワイルドカードを含むLIKE条件を使用できます。 %.pdfは列が代わりにあなたが興味のレコードを識別するためにLOCATE('.pdf',url) > 0のようなものを使用して、あなたのWHERE句ではright()機能

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

を使用することができます.pdf

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

で終わらなければならないことを意味します。 :

として、あなたは間違いなく最後にあるように「PDFファイル」をしたい場合は、あなたも試すことができます...これはあなたの文字列に「.PDF」を含む任意のURLを与えるだろう、

を指摘しました

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

私は、どのような場合の問題に対処するためにLOWERまたはUPPERを使用します。

また、LIKE %.pdf(大文字小文字の問題に注意してください)のように、 を他の人が使用することもできます。

関連する問題