不使用plpgsql,我试图在pgsql SELECT语句中对给定文本进行urlencode.
这种方法的问题:
select regexp_replace('héllo there','([^A-Za-z0-9])','%' || encode(E'\\1','hex'),'g')
...是编码函数没有传递regexp参数,除非有另一种方法从实际工作的替换表达式中调用函数.所以我想知道是否有一个替换表达式,它本身可以将匹配编码为十六进制值.
可能存在其他功能组合.我以为会有一个聪明的正则表达式(那可能仍然是答案),但我找不到它.
select regexp_replace(encode('héllo there','hex'),'(..)',E'%\\1','g');
但这并不会使字母数字字符成为人类可读的字符.