如何使用SQL更新此数据?

时间:2012-02-02 07:21:49

标签: sql sqlite

  

可能重复:
  How to replace string in SQLite?

我有一个表列数据

  

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

     

/var/sdg/64444223/Documents/Banana.jpg

我想更新此列,以便删除/ Documents之前的任何内容。 所以输出应该是:

  

/Documents/apple.jpg

     

/Documents/Banana.jpg

如何使用UPDATE语句SQL实现此目的?

1 个答案:

答案 0 :(得分:1)

这样的事情会起作用:

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

INSTR找到字符串/Documents/的位置,MID从那里开始一切。

备注:

  1. 当你有类似的东西时,这可能不会像你期望的那样起作用 路径字符串中的/Documents/Documents/
  2. 取决于您的RDBMS MIDINSTR可能不可用,但大多数RDBMS都支持它们。
  3. <强>更新

    在我的回复之后,您已经更新了SQLite是您选择的RDBMS - 这会让事情变得更加困难。 SQLite中没有INSTR,因此大多数人会建议您使用程序解析结果,在那里更改并更新数据 - 例如在this SO post.

    但是......因为你的两个例子都有一个固定的目录名长度(总共18个字符),所以在你的情况下,你可以稍微轻松一点:

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

    我还没有尝试过这个,但也许这适合你。