我需要做一个 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/