【问题标题】:displaying all the data of my table in scalar variable在标量变量中显示我的表的所有数据
【发布时间】:2018-01-28 01:12:35
【问题描述】:

我正在处理 sql,这里我有一个 sql 语句,我需要将我的 sql 表的数据存储在标量变量中

我做了这样的事情

declare @variable1 as varchar(50)
declare @variable2 as varchar(50)
SELECT @variable1 = tid, @variable2 = empname
FROM trainerdetails
select @variable2 as empname,@variable1 as tid

但我的输出中只显示了一条记录

empname     tid
test        354

如果我想将表的所有数据存储在我的标量变量中,我应该在这里做什么?

【问题讨论】:

    标签: sql-server scalar


    【解决方案1】:

    标量变量只保存数据的最后一部分。你需要一个表变量

    declare @tbl table
    (
    col1 int,
    col2 int
    )
    insert into @tbl
    select * from yourtable
    

    【讨论】:

      【解决方案2】:

      根据定义,标量变量一次只能保存一个值。所以...如果您想将一整列数据放入一个中,您需要连接该数据...通常是逗号分隔数组的形式。 类似的东西......

      IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL
      DROP TABLE #temp;
      
      CREATE TABLE #temp (
          ID INT NOT NULL,
          PersonName VARCHAR(50) NOT NULL 
          );
      
      INSERT #temp (ID, PersonName) VALUES 
          (1, 'Mark'), (2, 'Sally'), (3, 'Joe'), (4, 'Tammy'), (5, 'Bob');
      
      SELECT * FROM #temp t;
      
      --========================================
      
      DECLARE 
          @ID VARCHAR(100) = '', 
          @PersonName VARCHAR(1000) = '';
      
      SELECT 
          @ID = CONCAT(@ID, ', ', t.ID),
          @PersonName = CONCAT(@PersonName, ', ', t.PersonName)
      FROM 
          #temp t
      ORDER BY 
          t.ID;
      
      SELECT 
          ID = STUFF(@ID, 1, 1, ''),
          PersonName = STUFF(@PersonName, 1, 1, '');
      

      结果...

      ID              PersonName
      --------------- ------------------------------
       1, 2, 3, 4, 5   Mark, Sally, Joe, Tammy, Bob
      

      HTH, 杰森

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-10
        • 2022-10-13
        • 2017-04-13
        • 2021-04-11
        • 2018-05-07
        • 2018-11-22
        • 2013-10-02
        • 1970-01-01
        相关资源
        最近更新 更多