sql - sql拆分SQL SERVER 2019中逗号的列
解决方案
SQL Server 2019 提供了一个内置的字符串拆分器,称为string_split()
,可以将 CSV 字符串转换为行。唉,它无法跟踪 CSV 字符串中每个元素的原始位置,这使得它不适合像您这样的任务。
然而,我们可以使用这个openjson()
技巧:这个想法是稍微操纵字符串以使其成为有效的 JSON 数组,然后我们可以取消嵌套(使用序数!)。
考虑:
select t.*, x.*
mytable t
cross apply (
select
max(case when key = 1 then value end) col1,
max(case when key = 2 then value end) col2,
max(case when key = 3 then value end) col3,
...
from openjson('["' + replace(@str,',','","') + '"]')
) x;
当然,这要求您事先知道结果集中所需的最大列数。您可以select
使用其他条件表达式扩展子查询的子句以生成更多列。
推荐阅读
- java - 使用 lambda 的可运行线程
- docker - Docker:带有 ssl 后端的 nginx-proxy
- zsh - 递归地在多个目录上扩展 Zsh 文件名
- c++ - C++ 元组类型到函数参数类型
- cordova - 移动应用程序的 NPM 插件“cordova-plugin-paytm”不起作用
- google-cloud-platform - 在 Google Cloud Platform 中将存储类从 Multi-Regional 更改为 Coldline
- spring - 如何在 JPA 查询中有条件地忽略 WHERE 的 SQL 查询部分
- clickhouse - 为什么 clickhouse 'DESCRIBE TABLE' 返回 4 或 5 列
- blazor - 无法使用 VS 2019 预览版和 3.0 SDK 运行 Blazor
- python - 给定 2 个排序列表 A 和 B,找到 B 中不在 A 中的所有元素