从 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)
。
使用 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)
。