如何使用 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
MID
和 INSTR
可能不可用,但大多数 RDBMS 都支持它们。
更新:
在我的回复之后,您更新了 SQLite 是您选择的 RDBMS - 这让事情变得更加困难。 SQLite 中没有 INSTR,因此大多数人会建议您使用程序解析结果,在此处更改并更新数据 - 例如在 this SO post.
但是...由于您的两个示例都有固定的目录名称长度(总共 18 个字符),因此在您的情况下,您可以稍微轻松一些:
UPDATE yourtable
SET yourfield = SUBSTR(yourfield,18);
我还没有尝试过,但也许这对你有用。
【讨论】:
SQLite 没有INSTR()
函数或等效函数。所以,这不是一件容易的事。
抱歉,我在回复时未提供此信息。我将完善我的答案以展示它是如何在 SQLite 中完成的。以上是关于如何使用 SQL 更新这些数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章