gpt4 book ai didi

sql-server-2008 - 选择数据不为空或空白的列名

转载 作者:行者123 更新时间:2023-12-04 06:01:38 24 4
gpt4 key购买 nike

SQL Server 2008

我有一张 table MyTable带列A, B, C, D
当我选择一行时,我只想要一个包含非空/空白的列的列表。结果集将是

A
C
D

如果 B在我的行中为空。

其实可能有一列 E有一天。但是我可以从另一个表中获取所有可能的列名,并且需要检查 MyTable有任何一个,如果有,哪些有我选择的行的数据

因此:
select * from MyTable where ID = 6

select ColumnName from AllColumnNames
  • 每个ColumnName结果
  • 如果 ColumnName存在于 MyTable并且里面有数据 where ID = 6 , 添加 ColumnName输出。

  • 必须有一种方法可以在一个查询中做到这一点?

    最佳答案

    这会将您的表转换为 CTE 中的 XML,然后使用 XQuery 查找没有空值的节点名称。如果您的列名称不违反 XML 节点名称的规则,这将起作用。

    ;with C(TableXML) as
    (
    select *
    from MyTable
    where ID = 6
    for xml path('T'), elements xsinil, type
    )
    select T.X.value('local-name(.)', 'sysname') as ColumnName
    from C
    cross apply C.TableXML.nodes('/T/*') as T(X)
    where T.X.value('.', 'nvarchar(max)') <> ''
    在这里试试: https://data.stackexchange.com/stackoverflow/query/59187
    如果您还想排除 ID 列,请将其添加到 where 子句中。
    T.X.value('local-name(.)', 'sysname') <> 'ID'

    关于sql-server-2008 - 选择数据不为空或空白的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846474/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com