我有一个表列数据
/var/abc/23423423/Documents/apple.jpg
/var/sdg/64444223/Documents/Banana.jpg
我想更新此列,以便删除/ Documents之前的任何内容。 所以输出应该是:
/Documents/apple.jpg
/Documents/Banana.jpg
如何使用UPDATE语句SQL实现此目的?
答案 0 :(得分:1)
这样的事情会起作用:
UPDATE yourtable
SET yourfield = MID(yourfield,INSTR(yourfield,"/Documents/"));
INSTR
找到字符串/Documents/
的位置,MID
从那里开始一切。
备注:强>
/Documents/Documents/
。 MID
和INSTR
可能不可用,但大多数RDBMS都支持它们。<强>更新强>
在我的回复之后,您已经更新了SQLite是您选择的RDBMS - 这会让事情变得更加困难。 SQLite中没有INSTR,因此大多数人会建议您使用程序解析结果,在那里更改并更新数据 - 例如在this SO post.
但是......因为你的两个例子都有一个固定的目录名长度(总共18个字符),所以在你的情况下,你可以稍微轻松一点:
UPDATE yourtable
SET yourfield = SUBSTR(yourfield,18);
我还没有尝试过这个,但也许这适合你。