我正在开发从 SQL Server Db 提取 CDC 数据的逻辑应用程序。我正在使用“获取行”操作,但当我尝试使用过滤查询参数时,问题就出现了。
代码 eq '793'
(有效)__$operation eq '2'
(不起作用)@{string('__$operation')} eq '2'
(不起作用)
我认为问题可能出在“$”字符上。
错误信息
{
"status": 400,
"message": "Syntax error at position 12 in '__$operation eq '2'' "
}
有人可以帮帮我吗?
最佳答案
$
是根据 OData Normative 的保留字符,您应该在 URI 形成之前对其进行百分比编码。不幸的是,我尝试了百分比编码,但仍然出现语法错误,似乎过滤查询中不允许这样做。
解决方案
<小时/>这是解决方案,在逻辑应用中,您不能在筛选查询中使用 %
,因此您不能将 %24
用于 $
,您应该使用 _x0024_
。我现在可以成功获取结果:
注意开头有三个_
。如果字段/列名称中有其他特殊字符,则可以使用此模式。例如,如果字段名称为Display Name
,中间有一个空格字符,那么在过滤查询中,您需要将其转换为Display_0x0020_Name
有关此编码的更多详细信息,请参阅Encode and Decode XML Element and Attribute Names and ID Values
关于Azure 逻辑应用程序 Sql 连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45681844/