Hologres exec_external_sql 单引号除了用$$符转义还有其他吗? -[阿里云_云淘科技]

Hologres exec_external_sql 单引号除了用$$符转义还有其他吗? 我们传参是否也是$ ,有冲突

以下为热心网友提供的参考意见

在 Hologres 中,当您需要执行外部 SQL 并且希望插入单引号时,通常可以使用 $ 符号进行转义。但是,如果您同时还需要传递参数,并且这些参数中也可能包含 $ 符号,确实可能会导致冲突。

解决此问题的一种方法是使用不同的转义字符,比如使用 %% 代替 $ 来转义单引号。

以下是一个简单的示例:

假设您有以下 SQL 查询:

SELECT * FROM my_table WHERE name = 'O'Connor';

如果您想通过 Hologres 的 exec_external_sql 执行此查询,并希望将 ‘O’Connor’ 作为参数传递,您可以使用 $ 进行转义:

SELECT * FROM my_table WHERE name = '
$$
O''Connor
$$
';

但是,如果您还需要传递其他参数,并且这些参数中也可能包含 $ 符号,那么您可能需要考虑使用其他的转义字符,例如 %%:

SELECT * FROM my_table WHERE name = '%%O''Connor%%';

然后,在您的应用程序中,当您构建这个 SQL 查询时,确保正确地替换这些转义字符。

以下为热心网友提供的参考意见

我理解exec_external_sql 的转移是在 holoweb 中执行 MC 的 query ,此回答整理自钉群“实时数仓Hologres交流群”

以下为热心网友提供的参考意见

关键字、保留字、系统字段、特殊字符、大小写需使用双引号(””)进行转义。

Hologres对列名、表名等关键字的限制包括:列名称不能以hg开头、Schema名称不能以holo、hgpg开头。同时还需要遵循PostgreSQL本身的关键字、保留字、系统字段规范,详情请参见关键词列表、系统列列表,这些PostgreSQL关键词作为列名时需要加双引号(””)进行转义。

表名和列名均对大小写不敏感,如需定义大写表名、大写列名、特殊字符表名或列名、以数字开头的表名或列名时,可使用双引号(””)进行转义。

Hologres V2.0版本起优化了设置表属性时使用双引号(””)进行转义的语法。如果需要对列名进行转义,则需要使用新的语法。如果您仍希望使用旧语法,需要开启如下GUC。

— session级别开启旧语法开关
set hg_disable_parse_holo_property = on;

— DB级别开启旧语法开关
alter database set hg_disable_parse_holo_property = on;

建表概述https://help.aliyun.com/zh/hologres/user-guide/overview-3?spm=a2c4g.11186623.0.i17

本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/18622.html

(0)
匿名
上一篇 2023年12月25日
下一篇 2023年12月25日

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。