SQL Server将分隔字符串拆分为JSON数组
服务器:SQL Server 2016 我试图在DB-to-JSON数组中将分隔字符串拆分为一列,以便在ETL作业中轻松联接SQL Server将分隔字符串拆分为JSON数组,json,sql-server,Json,Sql Server,服务器:SQL Server 2016 我试图在DB-to-JSON数组中将分隔字符串拆分为一列,以便在ETL作业中轻松联接 shirt|~*~|trouser|~*~|t-Shirt|~*~|towels|~*~| 转换为JSON值 {"values":["shirt", "trouser", "t-Shirt", "towels"]} 我在这里跟随的一篇文章有一点帮助,但还不够深入,我想使用select而不是procedure/function进行转换 任何指针都是有用的 在这里
shirt|~*~|trouser|~*~|t-Shirt|~*~|towels|~*~|
转换为JSON值
{"values":["shirt", "trouser", "t-Shirt", "towels"]}
我在这里跟随的一篇文章有一点帮助,但还不够深入,我想使用select而不是procedure/function进行转换
任何指针都是有用的
在这里,替换似乎是更好的选择:
DECLARE @CSV varchar(MAX) = 'shirt|~*~|trouser|~*~|t-Shirt|~*~|towels|~*~|';
SELECT '{"values":["' + REPLACE(V.csv,'|~*~|','","') + '"]}'
FROM (VALUES(@CSV))V(csv);
您必须在SQL Server中执行此操作吗?我的意思是,在像C或Java这样的地方处理非规范化的CSV数据要比在数据库中容易得多。我们在批处理作业中读取SQL视图中的数据,这是ETLOK的一部分,只要您发现自己将大量CSV数据拉入数据库,也许是时候退一步,质疑你的管道了。为什么结尾有一个分隔符?因此,它不应该是“{values:[衬衫、裤子、t恤、毛巾]}”吗?我认为退后一步,质疑你的管道应该是公认的答案。