【问题标题】:SQL Statement to UPDATE three characters in a stringSQL 语句更新字符串中的三个字符
【发布时间】:2013-11-28 23:57:18
【问题描述】:
如何从名为'link'的列中的一行中获取一个字符串,并通过在字符串中的特定索引位置添加三个字母来修改它。
具体例子:
我想使用 SQL 语句选择值 'http://www.hello.no' 和 UPDATE 和 'http://www-x1.hello.no'。
假设“-x1”开始的索引位置将始终为 10。
这需要使用 PostgreSQL 来完成。但是,如果您可以使用通用 SQL 语句捕获逻辑,那就太好了。 :)
【问题讨论】:
标签:
sql
database
postgresql
stored-procedures
database-migration
【解决方案1】:
这可以满足您的要求:
update the_table
set the_column = left(the_column, 10) || '-x1' || substring(the_column, 10);
但是我不确定这是否是您想要的。看来您想在第一个 . 前面插入 '-x1',这会有所不同。
【解决方案2】:
Postgresql 有一个用称为regexp_replace 的模式进行替换的功能。您可以像这样使用该功能:
UPDATE my_table
SET link = regexp_replace(link, 'www', 'www-x1')
WHERE <...>
当然你也可以用直接的字符串操作来做到这一点:
UPDATE my_table
SET link = left(link, 10) || '-x1' || substring(link from 10)
WHERE <...>