如何将n列连接成一列?

2023-12-07

我的目标是如果我有这个:

colmuns      c1 | c2 | c3 | c4 | c5 | n..
row1          a |  a |  a |  a |  a | 
row2          b |  b |  b |  b |  b |
rowN...

我想做一个会返回的查询

   myCol
   aaaaa
   bbbbb
   nnnnn...

我知道我能做到

select t2.id, (
    select  *
    from mytable t1
    where t1.id= t2.id
    for xml path('')) as row
from mytable t2

它会将具有许多列的整行放入一列中,就像我想要的那样

现在,如何过滤掉xml标签呢?

或者还有其他解决方案吗?

edit列可能为 null,不是 varchar,可以是 int、varchar、date 等


您可以简单地使用 T-SQL 的字符串连接运算符“+”

SELECT c1 + c2 + c3 + c4 + c5 + ...
FROM myTable

如果某些列可能包含空值,您可以使用ISNULL() 函数, as in

SELECT ISNULL(c1, '') + ISNULL(c2, 'x') + ...  -- note how you can substribute NULLs with any desired value
FROM myTable

You can 动态创建这样的 SELECT 语句通过利用 SQL Server 元数据:

SELECT COLUMN_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'myTable'
   AND DATA_TYPE IN ('char', 'varchar') -- can further filter out non desired colums
order by ORDINAL_POSITION    -- and also pick a given order

例如

DECLARE @SqlStmt AS VARCHAR(8000)
DECLARE @Ctr AS INT
DECLARE @ColName AS VARCHAR(80)

DECLARE colCursor CURSOR 
   FOR SELECT COLUMN_NAME
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE table_name = 'myTable'
      AND DATA_TYPE IN ('char', 'varchar')
  ORDER BY  ORDINAL_POSITION
  FOR READ ONLY;

OPEN colCursor;

SET @Ctr = 0
SET @SqlStmt = 'SELECT '

FETCH NEXT FROM colCursor INTO @colName;
WHILE @@FETCH_STATUS = 0
BEGIN
    IF @Ctr > 0
    BEGIN
        SET @SqlStmt = @SqlStmt + ' + '; -- w/o the spaces if size is a pb
    END
    SET @Ctr = @Ctr + 1;
    SET @SqlStmt = @SqlStmt + @ColName;   -- w/ ISNULL if needed...

    FETCH NEXT FROM colCursor INTO @colName;
END;
CLOSE colCursor
DEALLOCATE colCursor

SET @SqlStmt = @SqlStmt + ' FROM ' + 'myTable'
-- Here to add to @SqlStmt (WHERE clause, other columns, other 
-- tables/join whatever...

PRINT @SqlStmt  -- OR EXEC() it ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将n列连接成一列? 的相关文章

  • 对于返回超过1个值的SQL select,当Id为GUID时它们如何排序?

    我想知道 SQL Server 如何对查询返回的数据进行排序 并且各个表的 Id 列都是 uniqueidentifier 类型 我在创建所有 GUID 时使用 NHibernate GuidComb 并执行以下操作 Sheet sheet
  • SQL Server 抱怨无效的 json

    我正在使用 Azure 数据工厂和 Azure SQL 数据库编写 ETL 工具 数据工厂捕获映射数据流的输出并将其作为字符串插入到 SQL Server 表 Audit OperationsEventLog 的 StatusMessage
  • SQL Server - 将行连接到逗号分隔的列表中

    假设我有一个临时表 如下所示 Id Value 1 1 1 2 1 3 2 1 2 2 我希望我的桌子是这样的 Id ValueList 1 1 2 3 2 1 2 所以基本上我需要将我的值分组为逗号分隔的列表 我已经尝试过以下操作 SEL
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 如何删除 Sql Server 2005 中存在的临时 SP

    我的问题很简单 如何删除临时存储过程 如果存在 这是因为当我在脚本中创建临时 SP 时 它会在第二次运行时抛出类似 数据库中已存在名为 sp name 的对象 的错误 我不想向用户显示此消息 请帮我 您的解决方案受到高度赞赏 临时进程的删除
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • SQL Server 错误“隐式转换,因为值的排序规则由于排序规则冲突而无法解析。”

    我在开发存储过程时遇到此错误 无法执行 varchar 值到 varchar 的隐式转换 因为由于排序规则冲突而无法解析该值的排序规则 声明是这样的 Select City COLLATE DATABASE DEFAULT AS Place
  • 如何获得一列中的最大数量?

    我一直在尝试找到一个如何获取列中最大数字的示例 我想做的是 找到 TABLE A 中的最大列数 点 列 例如 我想输出这个 MAX 数字
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve
  • SQL Server 实例名称的最大长度?

    我需要知道以下版本的 SQL Server 实例名称的最大字符长度 如果它们之间存在差异 SQL Server 2000 SQL Server 2005 SQL Server 2008 SQL Server 2008 R2 我正在开发一个应
  • C# 和 SQL Server:如果字符串值为空,如何在命令参数中插入 DBNull.Value?

    我已经搜索了几个小时 但找不到解决方案 我正在将一些字符串插入 SQL 但是有时 我用来执行此操作的方法可能包含空字符串 即 因此我想在 SQL Server 中插入一个空值 首先我测试我的方法以确保我能够插入DBNull Value通过使
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了

随机推荐

  • 是否可以从获取的 url 而不是规范的 url 中提取元数据?

    我有一个像这样的 Facebook 链接到我没有完全控制权的页面 我可以修改但不是页面的 因此 我尝试在我拥有完全控制权的新页面上设置 like 按钮的链接 在此页面上设置opengraph元标记 并设置一个链接到原始页面的og url 但
  • 如何捕获全局异常?

    有没有办法捕捉global代码中的 崩溃 应用程序异常 例如 objc exception throw EXC ARITHMETIC 等 我需要它 因为我想在应用程序被系统杀死之前做一些事情 您可以使用以下方法为任何未捕获的异常设置处理程序
  • MySQL查询从一个表中获取最佳排名并用另一个表更新结果

    我有一个排名板 列出了每种性别 男性和女性 的前 100 个最佳博客 我有一个博客表 PRIMARY blogs id users id blogs score blogs score time gender 1 11 2852 2015
  • 如何使用天蓝色连接字符串覆盖本地连接字符串

    我在 Net core 项目中使用 appsettings json 作为连接字符串 我的连接字符串是 ConnectionStrings OT DB Connection Data Source 108 Initial Catalog O
  • 运行 Composer Laravel 8 时出现 Symfony 进程错误

    突然在我的 Laravel 8 项目中 我运行了 Composer 来卸载一个依赖项 我想重新安装该依赖项 只是为了顺序并从头开始 我开始抛出这个与 Symfony Process 有关的错误 PHP 致命错误 未捕获的类型错误 fclos
  • 如何将每个 DStream 保存/插入到永久表中

    我一直面临着 Spark Streaming 的问题 关于将输出 Dstream 插入到永恒的SQL 表 我想将每个输出 DStream 来自 Spark 处理的单个批次 插入到一个唯一的表中 我一直在使用 Python 和 Spark 版
  • 在Java中禁用键盘/鼠标

    我正在开发一个程序 它允许用户锁定计算机 这样其他人就不能使用它 无论如何 我可以禁用鼠标和键盘上的特定键吗 谢谢 不 但是您可以创建让程序锁定屏幕 然后使用 MouseMovementListener 以便每次鼠标移动时 您都以编程方式将
  • 使用 Javascript 选定单词的索引

    如何使用 Javascript 获取 HTML 中选定文本的索引 例如 在一个 HTML 文件中 有如下段落 我住在印度 印度是一个非常美丽的国家 现在如果用户选择India在第一句话中应该有一个alert 5如果用户选择India第二行然
  • C# lambda 编译成什么?堆栈框架,匿名类型的实例,还是?

    C lambda 编译成什么 堆栈框架 匿名类型的实例 还是 我读过这个question 这主要回答了 为什么 在使用隐式类型功能时不能使用 lambda 但是 这个问题旨在回答编译器生成什么构造来实际执行 lambda 代码 它是匿名类型
  • 使用 Telnet 从 Gmail 发送电子邮件

    我正在 Windows 上工作 并且启用了 telnet 客户端 在cmd提示符下 telnet smtp gmail com 587 220 mx google com ESMTP dk3sm50678627pbc 32 gsmtp He
  • gulp:如何在不刷新的情况下更新浏览器(仅适用于 css 更改)

    我已经设置了 gulp 以便在进行更改时浏览器会重新加载 但是 对于 css 更改 我希望浏览器无需刷新即可更新 但我不知道如何执行此操作 对于我当前的设置 我使用了this教程 var debug require gulp debug c
  • 使用正则表达式拆分列中的值

    我的 data frame 有两列 如下所示 dat ID Details id 1 box1 homodomain gn box1 os homo sapiens p 4 se 1 id 2 sox2 plurinet gn plu os
  • 如何在 unicode 中管理混合 LTR 和 RTL 语言?

    有时我们必须在显示屏上显示混合了 RTL 和 LTR 语言的消息 该消息采用 unicode 格式 那么 unicode 如何处理混合呢 对平台有依赖吗 该过程由此处描述的 Unicode 双向算法描述 http www unicode o
  • 如何使用 md5 代替 bcrypt?

    我需要使用md5 代替bcrypt 用于存储密码 但是当我这样做时 protected function create array data return Account create username gt data username e
  • 这段代码中DATA SEGMENT下的代码什么时候执行?

    我是汇编编程的初学者 我在谷歌上浏览了很多 信息很多 但是我还是看不懂下面的代码 如果有人能解释 我将不胜感激 MOV AX 数据 我也不明白数据段中存在的代码何时会在此程序中执行 ASSUME CS CODE DS DATA CODE S
  • 将参数传递到 JButton ActionListener

    我正在寻找一种将变量或字符串或任何内容传递到 JButton 的匿名 actionlistener 或显式 actionlistener 中的方法 这是我所拥有的 public class Tool public static void a
  • Require.js 与 Phonegap 和 iOS 推送通知

    我正在使用 Phonegap Backbone js 和 Require js 构建一个应用程序 该应用程序实现了 Phonegap 推送通知 目前 index html 中脚本的加载如下所示
  • jQuery keyup() 非法字符

    我有一个字段 希望在用户键入时显示一些非法字符 在下面的示例中我该如何做到这一点 input bind change keyup function var val this attr value if val contains this c
  • 我们如何检测影子根是使用 v0 还是 v1 API 创建的?

    假设一个 JS 模块导出shadowRoot这是用以下任一方法创建的el createShadowRoot or el attachShadow 我们不知道是哪个 我们如何检测根是 v0 影子根还是 v1 影子根 即我们如何检测使用哪种方法
  • 如何将n列连接成一列?

    我的目标是如果我有这个 colmuns c1 c2 c3 c4 c5 n row1 a a a a a row2 b b b b b rowN 我想做一个会返回的查询 myCol aaaaa bbbbb nnnnn 我知道我能做到 sele