【问题标题】:Azure Digital Twin forbbitten words in QueryAzure 数字孪生禁止查询中的单词
【发布时间】:2021-08-20 09:28:13
【问题描述】:

当我执行查询时

SELECT Group FROM DIGITALTWINS Sensor JOIN Group RELATED Sensor.contains WHERE Sensor.$dtId='xxx’

我遇到了错误

RestError: SQL query parse failed: SQL Parser Error, Line=1, Position=7, Message=mismatched input 'Group' expecting {AVG, CONTAINS, COUNT, DEVICES_JOBS, DEVICES_MODULES, DEVICES, DIGITALTWINS, RELATIONSHIPS, JOIN, MAX, MIN, RELATED, SUM, TOP, EXACT, DEFAULT, '*', IDENTIFIER}
SQL Parser Error, Line=1, Position=13, Message=mismatched input 'FROM' expecting BY See samples in http://aka.ms/adtv2query for the correct syntax.

但是当我将“组”更改为另一个词时,前“a”查询成功。 当我使用“订单”一词时,我遇到了同样的错误。 我想这是因为这个词用在普通的SQL查询中,即使数字孪生不支持它,仍然想解析它,我得到了一个错误。

在哪里可以找到查询的禁用词列表?

【问题讨论】:

    标签: azure azure-digital-twins


    【解决方案1】:

    我看到你混合了单引号:' vs '(我不确定它们是如何命名的)。有时在复制和粘贴文本时会发生这种情况。

    更新: Group 字(以及任何其他保留字)必须使用方括号进行转义:[[<IDENTIFIER>]]

    查询:

    SELECT [[Group]] FROM DIGITALTWINS Sensor JOIN [[Group]] RELATED Sensor.contains WHERE Sensor.$dtId='xxx'
    
    

    【讨论】:

    • 我在查询中使用了 '' 引号,但在使用“组”一词时仍然可以重现该问题
    • @asergaz 你是对的,引号不是唯一的问题,更新了答案
    • @Petr 谢谢,转义词对我有用!我还更正了引号(我在发布查询时添加了它,它对原始查询没有影响)您有禁用词列表吗?
    【解决方案2】:

    这是语言中的一组“保留”关键字:

    • 全部
    • 作为
    • 升序
    • 平均水平
    • 作者
    • 计数
    • DESC
    • DEVICES_JOBS
    • DEVICES_MODULES
    • 设备
    • ENDS_WITH
    • 错误
    • 来自
    • 集团
    • IS_BOOL
    • IS_DEFINED
    • IS_NULL
    • IS_NUMBER
    • IS_OBJECT
    • IS_PRIMITIVE
    • IS_STRING
    • 最大
    • 分钟
    • 不是
    • NOT_IN
    • 订购
    • 选择
    • STARTS_WITH
    • 总和
    • 顶部
    • 是的
    • 在哪里
    • IS_OF_MODEL

    这些词不能用作标识符,除非用 [[ ]] 括起来。

    [更新] 在文档中查看更多详细信息:https://docs.microsoft.com/en-us/azure/digital-twins/reference-query-reserved

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 1970-01-01
      • 2021-05-19
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2019-05-15
      相关资源
      最近更新 更多