我需要使用Postgres的UPDATE
函数执行Replace()
脚本,但我不知道我必须替换的确切字符串,我想知道是否有某种方法我可以使用LIKE
与Wildcards
运算符类似地执行此操作
我的问题是我得到了一个包含一些脚本的表,并且在每个脚本的末尾有一个标记<signature>
,如下所示:
'SELECT SCRIPT WHATEVER ....&lt;签名&GT; 782798e2a92c72b270t920b&LT;签名&GT;'
我需要做的是:
UPDATE table SET script = REPLACE(script,'<signature>%<signature>','<signature>1234ABCDEF567890<signature>')
无论签名是什么,我都需要替换为我定义的新签名。我知道使用'%'不起作用,只是为了说明我想要执行的效果。在Postgres 9.5中有没有办法做到这一点?
答案 0 :(得分:0)
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)
)
注意:添加部分是为了便于理解(希望如此)。
答案 1 :(得分:0)
使用POSIX正则表达式执行与其他答案相同的操作(但更短)
select
substring('a bunch of other stuff <signature>mysig</signature>'
from '<signature>(.*?)</signature>')