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