使用Mule 4 Dataweave在字符串内放置单引号



我们使用的是Mule 4 (runtime 4.3.0)和Dataweave 2.0

数据库期望查询类似于

Select id from table where firstName = 'test-from-text';

名字的值来自查询参数firstName。我们正在以类似骡子的方式构建SQL查询:-

<ee:transform doc:name="firstName" doc:id="1e151bed-d1c4-4af2-b2f6-91f9cbf1f89d">
<ee:message>
</ee:message>
<ee:variables>
<ee:set-variable variableName="firstName"><![CDATA[%dw 2.0
output application/java
---
attributes.queryParams.firstName]]></ee:set-variable></ee:variables>
</ee:transform>
<ee:transform doc:name="Sql Query" doc:id="765c361e-e400-45ad-810a-c504169eb4ad" >
<ee:message >
</ee:message>
<ee:variables >
<ee:set-variable variableName="sqlQuery" ><![CDATA[%dw 2.0
output application/java
---
'SELECT id
FROM table WHERE firstName =' ++vars.firstName
</ee:set-variable>
</ee:variables>
</ee:transform>

传递变量。sqlQuery到数据库连接器中。上面的代码生成了如下查询:"select id",其中firstName = test-from-text". 数据库期望查询类似于

Select id from table where firstName = 'test-from-text';

注意:

我们需要构造查询等变量(原因:很多条件)。我们确实有一个类似日期的列,我们需要用引号括起来。

在名字上面包含"from"这是一个数据库保留关键字。当我们在sql编辑器中使用引号进行查询时,它会工作。

问题:如何围绕var。firstName和var中的单引号。SqlQuery字符串

如有任何帮助,不胜感激。

对字符串字面值使用双引号,使单引号只是另一个字符:

%dw 2.0
output application/java
---
"SELECT id
FROM table WHERE firstName = '" ++ vars.firstName ++ "'"

或者你可以只转义单引号,但它看起来更令人困惑:

'SELECT id
FROM table WHERE firstName = '' ++ vars.firstName ++ '''

最新更新