我正在尝试在
Postgresql中编写一个解析文件路径的sql函数.
我想只返回文件名.
我想只返回文件名.
我无法在函数中获得准确的文本字符串.
这是功能:
Function: job_page("inputText" text) DECLARE $5 text; BEGIN $5 = quote_literal("inputText"); return $5; END
当我运行这个:
select job_page('\\CAD_SVR\CADJOBS\7512-CEDARHURST ELEMENTARY SCHOOL\7512-20.DWG')
我得到这个结果:
"E'\\CAD_SVRCADJOBSé2-CEDARHURST ELEMENTARY SCHOOLé2-20.DWG'"
Postgresql解释斜杠后跟某些字符作为特殊字符.
我怎么逃避?
解决方法
您应该使用转义字符串语法:
select E'\\CAD_SVR\\CADJOBS\\7512-CEDARHURST ELEMENTARY SCHOOL\\7512-20.DWG'; \CAD_SVR\CADJOBS\7512-CEDARHURST ELEMENTARY SCHOOL\7512-20.DWG
这无论如何都适用.
或者您可以设置standard_conforming_strings = on并使用:
select '\CAD_SVR\CADJOBS\7512-CEDARHURST/ ELEMENTARY SCHOOL\7512-20.DWG'; \CAD_SVR\CADJOBS\7512-CEDARHURST/ ELEMENTARY SCHOOL\7512-20.DWG
只有在pl / pgsql函数中为exec调用构造查询时,才应使用quote_literal函数.要在客户端构造查询,您应该使用客户端的库引用函数,如libpq中的PQescapestringConn或PHP中的pg_escape_string.但最好的选择是使用预准备语句并使用字符串作为参数,这将消除所有引用,也是much safer.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。