Apache Calcite:处理MongoDB集合名称中的特殊字符
问题描述:
如果集合的名称包含特殊字符(如1a84375b-9bd0-4ec3-9f93-536ce380f813
),是否有办法在MongoDB上执行SQL查询?当我执行我的陈述时遇到org.apache.calcite.sql.parser.impl.ParseException
。有没有转义字符?Apache Calcite:处理MongoDB集合名称中的特殊字符
答
在Calcite SQL中,可以引用标识符(表名和列名)。在默认方言中,您使用双引号。例如,
SELECT "a column"
FROM "a table with spaces in the name"
还要注意的是,当如果标识符被引用,方解石保留它们的情况下(它不转换为大写或小写),并使用区分大小写匹配。
顺便说一下,这与Oracle和其他几种常用的SQL方言是一样的。
对我来说工作正常。我更改了SQL_SERVER中的默认方言。现在,我遇到了org.apache.calcite.sql.validate.SqlValidatorException:当我尝试运行SELECT [6a3c9c9a-a607-46ad-8fca-7308d82d58a4] .id时未找到表'6a3c9c9a-a607-46ad-8fca-7308d82d58a4' [6a3c9c9a-a607-46ad-8fca-7308d82d58a4] .name FROM [6a3c9c9a-a607-46ad-8fca-7308d82d58a4]针对MongoDB数据库。我已经用sqlline试过了,并且以!表的形式验证了6a3c9c9a-a607-46ad-8fca-7308d82d58a4的存在名称。 – Pete