gpt4 book ai didi

postgresql - 在 Postgresql 中转义反斜杠

转载 作者:行者123 更新时间:2023-11-29 11:24:04 24 4
gpt4 key购买 nike

我正在尝试在 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

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

关于postgresql - 在 Postgresql 中转义反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com