从 Xquery 中的字符串对象导出双引号 csv 数据的任何更好的方法

Any better way to export double quote csv data from string object in Xquery

使用 Xquery for ML 在日志文件中将字符串列表导出为双引号 csv 格式是很常见的。

我想知道从字符串列表中是否有更好的方法。 目前我必须使用很多 fn:concat('"', $value , '"') 块来完成它。 如果要处理的值列表很长,将变得难以阅读。

下面是一个简单演示案例的当前代码。

xquery version "1.0-ml";

let $values := ('string 1', 'string 2', 'string N')

return fn:string-join( $values ! fn:concat('"', . , '"'), ',')

预期输出为"string 1","string 2","string N"

如果您想将每个值都用引号括起来,您可以稍微简化为如下所示。

xquery version "1.0-ml";

let $values := ('string 1', 'string 2', 'string N')

return '"' || fn:string-join($values, '","') || '"'

使用通用 XQuery 3.1,您可以使用 arrow operator:

优雅地构建 CSV 值
xquery version "3.1";

let $values := ('string 1', 'string 2', 'string N')
return
    $values
    => for-each( function($value) { '"' || $value || '"' } )
    => string-join(",")

根据您的值的内容,您可能需要应用一些转义 - 例如,逗号或引号。

这可以很容易地包装到一个函数中,例如 local:create-csv-row($values)