我正在开发从SQL Server Db中提取CDC数据的Logic App。我正在使用Get Rows操作,但当我尝试使用过滤器查询参数时出现问题。
code eq '793'
(作品)__$operation eq '2'
(不工作)@{string('__$operation')} eq '2'
(不工作)我认为问题可能出在“$”字符上。
错误消息
{
"status": 400,
"message": "Syntax error at position 12 in '__$operation eq '2'' "
}
有人可以帮助我!
答案 0 :(得分:0)
我正在使用Get Rows操作,但当我尝试使用Filter Query参数时会出现问题。
我认为问题可能出在“$”字符上。
根据我的测试,如果字段/列包含$
(或__
)并在过滤查询中使用该字段,则可以正常使用。
但是,如果我将字段定义为以__$operation
开头的__$
,那么当我在过滤查询中使用它时会导致同样的问题。 因此,如果可能,您可以尝试修改SQL数据库中的列名。
答案 1 :(得分:0)
$
是根据OData Normative的保留字符,您应该在URI形成之前对其进行百分比编码。不幸的是,我尝试了百分比编码并仍然会出现语法错误,似乎在过滤查询中不允许这样做。
以下是解决方案,在Logic App中,您无法在过滤查询中使用%
,因此您无法将%24
用于$
,而应使用{{1我现在可以成功获得结果:
注意一开始有三个_x0024_
。如果字段/列名称中包含其他特殊字符,则可以使用此模式。例如,如果字段名称为_
,其中包含空格字符,则在“筛选查询”中,您需要将其转换为Display Name
有关此编码的详细信息,请参阅Encode and Decode XML Element and Attribute Names and ID Values