2012-02-02 7 views
-2

可能性の重複:
How to replace string in SQLite?SQLを使用してこのデータを更新するには?

私は

/var/abc/23423423/Documents/apple.jpg

/として表列のデータを持っていますvar/sdg/64444223/Documents/Banana.jpg

この列を更新して、/ Documentsの前の項目を削除します。 ので、出力は次のようになります。

/Documents/apple.jpg

/Documents/Banana.jpg

どのように私は、SQLのこの使用してUPDATEステートメントを達成していますか?

UPDATE yourtable 
SET yourfield = MID(yourfield,INSTR(yourfield,"/Documents/")); 

INSTRは、文字列/Documents/の位置を特定し、MIDがそこから始まるのすべてを取得します。このような

+0

SQLは言語です。どのSQL製品で作業していますか? SQLサーバ、MySQL、Postgres、Oracle ...? –

+0

私はSQLiteを使用しています。それは役に立ちますか? – meetpd

答えて

1

何かが動作します。

注:

  1. あなたのパス文字列で /Documents/Documents/のようなものを持っているとき、あなたはそれを期待し、これは多分動作しません。
  2. は、あなたのRDBMSによっては MIDINSTRは使用できない可能性がありますが、ほとんどのRDBMSには、それらをサポート。

更新:

私の返事の後、あなたはSQLiteのは、お好みのRDBMSであることを更新しました - これは、物事をより困難にします。 SQLiteにはINSTRはありませんので、ほとんどの人は、プログラムで結果を解析し、データを更新するようアドバイスします。例えばthis SO post.

(合計18文字で)固定のディレクトリ名の長さは、あなたのケースであなたは少し簡単にそれを行うことができることを小さなチャンスがあります:

UPDATE yourtable 
SET yourfield = SUBSTR(yourfield,18); 

私はまだこれを試していないが、多分これはあなたのために働きます。

+0

SQLiteには、 'INSTR()'関数などはありません。だから、これは容易なことではありません。 –

+0

申し訳ありませんが、私が返信していたので、この情報は提供されませんでした。どのようにSQLiteが実行されたかを示すために私の答えを洗練します。 – Bjoern