postgresql - 替换为 Postgres 中的未定义字符

标签 postgresql replace sql-update

我需要做一个 UPDATE使用 Replace() 的脚本Postgres 的功能,但我不知道我必须替换的确切字符串,我想知道是否有某种方法可以像 LIKE 那样做运算符,使用 Wildcards .
我的问题是我有一个包含一些脚本的表,每个脚本的末尾都有一个标签 <signature>像这样:

'SELECT SCRIPT WHATEVER.... < signature>782798e2a92c72b270t920b< signature>'

我需要做的是:

UPDATE table SET script = REPLACE(script,'<signature>%<signature>','<signature>1234ABCDEF567890<signature>')

无论签名是什么,我都需要替换为我定义的新签名。我知道使用 '%' 不起作用,它只是为了说明我想要执行的效果。在 Postgres 9.5 中有什么方法可以做到这一点吗?

最佳答案

 with expr
 as 
 (select 'Hello <signature>thisismysig</signature>'::text as
     full_text, '<signature>'::text as open, 
     '</signature>'::text as close
 )

 select  
   substring(full_text from 
      position(open in full_text)+char_length(open)
      for 
      position(close in full_text)- char_length(open)-position(open in full_text)
   )

注意:添加部分是为了便于理解(希望如此)。

关于postgresql - 替换为 Postgres 中的未定义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074512/

相关文章:

sql - jOOQ - 支持任意程度的 UPDATE ... SET ... 查询

MySQL 根据另一个表的值更新表

sql - SQL中的迭代函数,postgres

ruby - 错误 : null value in column "id" violates not-null constraint

xml - 如何在考虑 XML 命名空间的情况下替换 T-SQL 中的 XML 标记文本

java - 从字符串中删除字符

java - PostgreSQL JDBC 驱动程序不适用于 Heroku 数据库连接

java - Flyway如何初始化其数据库

java - 允许重复、保持插入顺序并允许删除和插入的结构

sql - 更新子句中缺少的记录