如何使用 SQL 更新这些数据? [复制]

Posted

技术标签:

【中文标题】如何使用 SQL 更新这些数据? [复制]【英文标题】:How to Update this data using SQL? [duplicate] 【发布时间】:2012-02-02 07:21:49 【问题描述】:

可能重复: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

如何使用 SQL 的 UPDATE 语句实现这一点?

【问题讨论】:

SQL 是语言。您正在使用哪种 SQL 产品? SQL-Server、mysql、Postgres、Oracle...? 我正在使用 SQLite。这有帮助吗? 【参考方案1】:

这样的事情会起作用:

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

INSTR 定位字符串/Documents/ 的位置,MID 从那里获取所有内容。

注意事项:

    当你有类似的东西时,这可能不会像你期望的那样工作 /Documents/Documents/ 在您的路径字符串中。 取决于您的 RDBMS MIDINSTR 可能不可用,但大多数 RDBMS 都支持它们。

更新:

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

但是...由于您的两个示例都有固定的目录名称长度(总共 18 个字符),因此在您的情况下,您可以稍微轻松一些:

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

我还没有尝试过,但也许这对你有用。

【讨论】:

SQLite 没有 INSTR() 函数或等效函数。所以,这不是一件容易的事。 抱歉,我在回复时未提供此信息。我将完善我的答案以展示它是如何在 SQLite 中完成的。

以上是关于如何使用 SQL 更新这些数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何实现sql server实时备份数据库

如何使用单独数据库中另一个表的数据更新一个表? [复制]

如何使用 C# 以编程方式复制 MS SQL 2000 数据库?

如何更新 Oracle 中的“长”数据类型?

SQL表名不同结构相同 如何做成复制订阅?

如何更新表数据? [复制]