如何编写SQL查询来更改JSON负载中的顺序并截断元素?

如何编写SQL查询来更改JSON负载中的顺序并截断元素?,sql,json,mulesoft,Sql,Json,Mulesoft,我是SQL新手。我试图查询一个数据库,以便得到JSON输出作为回报。我需要输出以显示值的截断版本,并按字母顺序显示键 例如,假设有效负载中的一个字段读取: {颜色:黑色带黄色装饰} 如何编写SQL查询,使其仅显示以下内容: {颜色:黑色} 另外,如何编写查询以按字母顺序列出键 非常感谢 我还没有试过任何东西;我是SQL新手。在Mule中执行此操作时,我将使用SQL查询获取原始信息,然后使用DataWeave进行转换: <flow name="selectParameterizedQuery

我是SQL新手。我试图查询一个数据库,以便得到JSON输出作为回报。我需要输出以显示值的截断版本,并按字母顺序显示键

例如,假设有效负载中的一个字段读取: {颜色:黑色带黄色装饰}

如何编写SQL查询,使其仅显示以下内容: {颜色:黑色}

另外,如何编写查询以按字母顺序列出键

非常感谢


我还没有试过任何东西;我是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"
  }
]