我编写了一个查询,它构建了一些到intranet站点的URL,但有些URL不起作用,因为它们包含需要进行URL编码的特殊字符。我试图避免编写一个脚本(在SQL之外(来进行URL编码;我希望数据库改为进行URL编码,这样我就可以直接将数据(按原样(导出到csv文件中。
例如,我可以很容易地对一个字符进行编码。这里,我将&
编码为%26
:
select
customer_id
,customer_name
,'https://intranet.local/customer/?id=' + replace(customer_id,'&','%26') as url
from customer
但是,当对多个字符进行编码时,这种方法会变得非常冗长。
Pervasive 13中是否有一个函数可以进行URL编码?
根据这里给出的答案,您可以使用创建一个函数
CREATE FUNCTION urlencode(:description char(200))
RETURNS char(200)
AS
BEGIN
SELECT
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(
Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(
Replace(RTRIM(:description)
,'%','%25') ,'&','%26') ,'$','%24') ,'+','%2B')
,',','%2C') ,':','%3A') ,';','%3B') ,'=','%3C')
,'?','%3D') ,':','%3F') ,'@','%40') ,'#','%23')
,'<','%3C') ,'>','%3E') ,'[','%5B') ,']','%5D')
,'{','%7B') ,'}','%7D') ,'|','%7C') ,'^','%5E')
,' ','%20') ,'~','%7E') ,'`','%60') ,'*','%2A')
,'(','%28') ,')','%29') ,'/','%2F') ,'\','%5C')
,' ','%20') INTO :description;
RETURN :description;
END;