【问题标题】:How to Update this data using SQL? [duplicate]如何使用 SQL 更新这些数据? [复制]
【发布时间】: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。这有帮助吗?

标签: sql sqlite


【解决方案1】:

这样的事情会起作用:

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

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

注意事项:

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

更新:

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

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

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

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

【讨论】:

  • SQLite 没有 INSTR() 函数或等效函数。所以,这不是一件容易的事。
  • 抱歉,我在回复时未提供此信息。我将完善我的答案以展示它是如何在 SQLite 中完成的。
猜你喜欢
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多