如何编写SQL查询来更改JSON负载中的顺序并截断元素?
我是SQL新手。我试图查询一个数据库,以便得到JSON输出作为回报。我需要输出以显示值的截断版本,并按字母顺序显示键 例如,假设有效负载中的一个字段读取: {颜色:黑色带黄色装饰} 如何编写SQL查询,使其仅显示以下内容: {颜色:黑色} 另外,如何编写查询以按字母顺序列出键 非常感谢如何编写SQL查询来更改JSON负载中的顺序并截断元素?,sql,json,mulesoft,Sql,Json,Mulesoft,我是SQL新手。我试图查询一个数据库,以便得到JSON输出作为回报。我需要输出以显示值的截断版本,并按字母顺序显示键 例如,假设有效负载中的一个字段读取: {颜色:黑色带黄色装饰} 如何编写SQL查询,使其仅显示以下内容: {颜色:黑色} 另外,如何编写查询以按字母顺序列出键 非常感谢 我还没有试过任何东西;我是SQL新手。在Mule中执行此操作时,我将使用SQL查询获取原始信息,然后使用DataWeave进行转换: <flow name="selectParameterizedQuery
我还没有试过任何东西;我是SQL新手。在Mule中执行此操作时,我将使用SQL查询获取原始信息,然后使用DataWeave进行转换:
<flow name="selectParameterizedQuery">
<db:select config-ref="dbConfig">
<db:sql>SELECT color FROM colortable</db:sql> <!-- query to get the color results -->
</db:select>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
%dw 2.0
output application/json
---
payload map {
color: $.color[0 to 4] // get 5 first characters
}
]]></ee:set-payload>
</ee:message>
</ee:transform>
</flow>
然后转换将返回:
[
{
"color": "Black"
},
{
"color": "Black"
},
{
"color": null
},
{
"color": "Red w"
}
]
注意,您仍然需要修改和调整查询
您可能需要使用不同的标准来选择颜色。请注意,“Red”将返回null,因为子字符串太短。您可以使用DataWeave表达式进行此操作。请澄清截断的标准。只是第一个单词直到第一个空格?您是否希望查询返回JSON,或者在Mule中可以这样做?您使用了这两个标记,但是JSON转换可能不是标准的SQL特性。请提及数据库供应商和版本以防万一。好问题。值变化很大,所以我认为按字符长度截断是理想的,如果这样做有意义的话?是的,JSON可以在Mule中返回。我正在使用SQL Server 2016。如果您想要N个字符,可以使用
子字符串
。确切的语法将取决于您特定的RDBMS,但它基本上是子字符串(,)
@Andrew谢谢!谢谢你,艾利德!非常感谢。
[
{
"color": "Black"
},
{
"color": "Black"
},
{
"color": null
},
{
"color": "Red w"
}
]