Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server将分隔字符串拆分为JSON数组_Json_Sql Server - Fatal编程技术网

SQL Server将分隔字符串拆分为JSON数组

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进行转换 任何指针都是有用的 在这里

服务器:SQL Server 2016

我试图在DB-to-JSON数组中将分隔字符串拆分为一列,以便在ETL作业中轻松联接

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恤、毛巾]}”吗?我认为退后一步,质疑你的管道应该是公认的答案。