加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Postgresql中转义反斜杠

发布时间:2020-12-13 16:02:54 所属栏目:百科 来源:网络整理
导读:我正在尝试在 Postgresql中编写一个解析文件路径的sql函数. 我想只返回文件名. 我无法在函数中获得准确的文本字符串. 这是功能: Function: job_page("inputText" text)DECLARE $5 text;BEGIN $5 = quote_literal("inputText"); return $5;END 当我运行这个
我正在尝试在 Postgresql中编写一个解析文件路径的sql函数.
我想只返回文件名.

我无法在函数中获得准确的文本字符串.

这是功能:

Function:  job_page("inputText" text)
DECLARE
    $5 text;

BEGIN
    $5 = quote_literal("inputText");
    return $5;
END

当我运行这个:

select job_page('CAD_SVRCADJOBS7512-CEDARHURST ELEMENTARY SCHOOL7512-20.DWG')

我得到这个结果:

"E'CAD_SVRCADJOBSé2-CEDARHURST ELEMENTARY SCHOOLé2-20.DWG'"

Postgresql解释斜杠后跟某些字符作为特殊字符.

我怎么逃避?

解决方法

您应该使用转义字符串语法:

select E'CAD_SVRCADJOBS7512-CEDARHURST ELEMENTARY SCHOOL7512-20.DWG';

CAD_SVRCADJOBS7512-CEDARHURST ELEMENTARY SCHOOL7512-20.DWG

这无论如何都适用.

或者您可以设置standard_conforming_strings = on并使用:

select 'CAD_SVRCADJOBS7512-CEDARHURST/ ELEMENTARY SCHOOL7512-20.DWG';

CAD_SVRCADJOBS7512-CEDARHURST/ ELEMENTARY SCHOOL7512-20.DWG

只有在pl / pgsql函数中为exec调用构造查询时,才应使用quote_literal函数.要在客户端构造查询,您应该使用客户端的库引用函数,如libpq中的PQescapeStringConn或PHP中的pg_escape_string.但最好的选择是使用预准备语句并使用字符串作为参数,这将消除所有引用,也是much safer.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读