【问题标题】:log file with insert - how to easly combine column name with inserted value带有插入的日志文件 - 如何轻松地将列名与插入的值结合起来
【发布时间】:2021-12-27 10:40:12
【问题描述】:

有没有人很好的解决方案如何将列名与准备好的 INSERT SQL 中的插入值结合起来?

我有日志文件。在这个日志文件中,我有 INSERT 查询。此查询包含 100 多个列,例如:

INSERT INTO tab
 (col_001, col_002, col_003, col_004, col_005, col_006, col_007, col_008, col_009, col_010)
VALUES ('a', 'b', 'c,,,', 'd', 'e', 'f', 'g', 'h', 'i', 'j');

您有任何想法如何轻松地将列名组合到如下所示的值:

col_001 = 'a'
col_002 = 'b'
col_003 = 'c,,,'
col_004 = 'd'
col_005 = 'e'
col_006 = 'f'
col_007 = 'g'
col_008 = 'h'
col_009 = 'i'
col_010 = 'j

假设我需要找出将在 col_067 列中插入的值。

谢谢。

【问题讨论】:

  • 重新发布closed 问题在此处不正确。有一个edit 功能......这样做会浪费您寻求帮助的人的时间。我建议这又是一个 XY 问题。修正你的设计,修正你的问题。
  • 您的问题不清楚。您有一个 日志文件 - 好的,那是一个文本文件吗?您是否在问如何解析文本文件中的数据?或者这实际上是 SQL Server 数据库中的数据,而您指的是一个表?如果是这样,您需要将值拆分为两组多行并将它们连接起来。带有实际表定义的Minimal, Reproducible Example 将是有益的。
  • “你只能投票或关闭请求吗?”Why shouldn't I assume I know who downvoted my post?。如果您查看了与此完全相同的先前问题,您会看到我没有投票关闭它...如果问题已关闭,则选民将公开。反对票永远不会,但仅仅因为我是第一个发表评论并不意味着我已经投票了;这两个是完全独立的动作。
  • 将插入语句重新排列为 select(?):dbfiddle.uk/…
  • @lptr 你的想法不错 :) 谢谢 :) 我喜欢它 :D

标签: sql sql-server


【解决方案1】:

使用unpivot 将列转换为行

select colname,
       colvalue
from tab
unpivot
(
  colvalue
  for colname in (col_001, col_002, col_003, col_004, col_005, col_006, col_007, col_008, col_009, col_010)
) unpiv;

db<>fiddle中的演示

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多