DataWeave字符串≤过滤不生效,如何包含首字母为D的条目?
问题分析与解决
原DataWeave代码中,$.countryName <= "D"无法匹配"Dutch"的原因是字符串字典序比较规则:单个字符"D"小于以D开头但后续还有字符的"Dutch"(类似字典里"D"排在"Dutch"前面),所以原条件会排除所有首字母为D但名称更长的条目。
解决方案
方案1:提取首字母进行范围判断
直接取countryName的第一个字符做比较,确保首字母在A到D之间:
%dw 2.0 output application/json --- payload filter ($.countryName[0] >= "A" and $.countryName[0] <= "D")
方案2:调整右边界为下一个字母
利用字典序特性,所有以D开头的字符串都小于"E",因此把右边界改为< "E":
%dw 2.0 output application/json --- payload filter ($.countryName >= "A" and $.countryName < "E")
两种方案执行后,都会输出包含Dutch的预期结果:
[ { "Id": "1", "countryName": "Austria" }, { "Id": "2", "countryName": "Belgium" }, { "Id": "3", "countryName": "Canada" }, { "Id": "4", "countryName": "Dutch" } ]
内容的提问来源于stack exchange,提问作者suneel raju
相关产品推荐
相关产品推荐

