sql - 使用管道分隔符在 SQL 查询中将一列拆分为多列
问题描述
我在表格的一列中有以下数据,我想将其拆分为更多列。
|
在这种情况下用作分隔符。列标题应该在之前:&列之后是它的值。
Column
-----------------------------------------------------------------------------
ID: 30000300 | Name: India | Use: New Use
ID: 30000400 | Name: Aus | New ID: 15625616 | Address 1: NEW Rd
ID: 30000400 | Name: USA | City: VIA ARAMAC | New ID: 123
ID: 30000500 | Name: Russia | New ID: 15624951 | Address 2: 2131 BEAUDESERT
输出应该是:
ID Name Use New ID City Address 1 Address 2 New City
----------------------------------------------------------------------
30000300 India New Use
30000400 Aus 15625616 NEW Rd
30000400 USA 15625616 VIA ARAMAC GALILEE
30000500 Russia 15624951 2131 BEAUDESERT
解决方案
您有几行在 nvarchar 列内包含键值对,但您需要一个表,该表具有基于键的标题,然后是仅包含值的行,无键。首先是像 Key1 这样的输入问题: Value1 | 键 2:值 2。这应该返回为
Key1 Key2
Value1 NULL
NULL Value2
或者这不是一个可能的情况?无论哪种方式,都存在生成具有动态列名的表的问题。
您的问题的问题是,这不是通常可以通过 SQL 解决的方案。您应该以您选择的编程语言获取数据,然后使用正则表达式或拆分方法来获取您需要的内容。
如果您坚持通过 SQL 执行此操作,则解决方案是将原始行输入转换为另一个字符串,然后您使用 sp_executesql ( https://docs.microsoft.com/en-us/sql/relational-databases/system-stored -procedures/sp-executesql-transact-sql),但我不推荐它。
推荐阅读
- optimization - 使用最小平方的非线性 ODE 优化
- python - 将 PyQt5 GUI 代码转换为 Jupyter Notbook
- npm - 无法使用 npm 安装 appmetrics
- java - 如何在java中用整数类型替换字符串中的字符串?
- tensorflow - 如何使用 tensorflow 创建这个自定义 ANN?
- shell - 使用 grep 根据特定条件记录表格的特定单元格
- kubernetes - 如何从 K3s 集群中的应用程序 pod 中删除机密的依赖关系
- github - Terraform CICD 管道 GCP
- java - 我的代码在硒中不起作用,需要帮助
- c# - Lambda Sum 子查询没有给出正确的结果