获取表行数据作为字符串以及列名称

时间:2014-11-29 06:54:59

标签: sql sql-server database sql-server-2008

我想将表行数据作为单个字符串以及列名称(使用SQL Server)。

假设我的表结构是:

--------------------------------------------------------------------
 LeaveTypeID     |  LeaveTypeName   |   Status   |  DisplayOrder
--------------------------------------------------------------------    
  1                   Earned Leaves      e            1 
  2                   Medical Leave      e            2 
  3                   Casual Leave       e            3 

现在例如。我想获得与LeaveTypeID=1

对应的详细信息

然后我希望输出格式为:

LeaveTypeID:1 & LeaveTypeName :Earned Leaves & Status :e & DisplayOrder:1

这意味着输出字符串格式应为:

FirstColumnName:FirstColumnValue SomeSeparator SecondColumnName:SecondColumnValue SomeSeparator......`

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分:1)

试试这个。

DECLARE @ SomeSeparator VARCHAR(2) = '&'

SELECT 'LeaveTypeID :'
       + CONVERT(VARCHAR(10), LeaveTypeID) + ' '
       + @SomeSeparator + ' LeaveTypeName :'
       + LeaveTypeName + ' ' + @SomeSeparator
       + ' Status :' + [status] + ' ' + @SomeSeparator
       + ' DisplayOrder :'
       + CONVERT(VARCHAR(10), DisplayOrder)
FROM   <tablename>
WHERE  LeaveTypeID = 1 

更新:动态工作

CREATE TABLE testing
  (
     LeaveTypeID   INT,
     LeaveTypeName VARCHAR(50),
     Status        CHAR(1),
     DisplayOrder  INT,
     images        IMAGE
  )

INSERT testing
VALUES (4,'Casual Leave','e',3,NULL),
       (1,'Earned Leaves','e',1,'sdfxfgfg'),
       (2,'Medical Leave','e',2,'dgbdxg' ),
       (3,'Casual Leave','e',3,'rtxtb')

DECLARE @sql           NVARCHAR(max),
        @query         VARCHAR(max)='',
        @SomeSeparator VARCHAR(2) = '&',-- SomeSeparator
        @tablename     VARCHAR(50) ='testing',-- Tablename
        @LeaveTypeID   INT =4 --filter

SET @sql ='Select '

SELECT @query += '+'' ' + @SomeSeparator + ' ' + column_name
                 + ' : ''+' + CASE WHEN CHARACTER_MAXIMUM_LENGTH IS NULL THEN ' isnull(convert(varchar(30),'+ COLUMN_NAME+'),'''') '
                                   WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL AND DATA_TYPE = 'Image' 
                                   THEN ' isnull(convert(varchar(8000), convert(varbinary(8000),'+ COLUMN_NAME+')),'''') ' 
                                   ELSE ' isnull('+COLUMN_NAME+','''')' END
FROM   INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_NAME = @tablename

SELECT @query = '''' + RIGHT(@query, Len(@query)-3)

SET @sql +=@query + ' from ' + @tablename
           + ' where LeaveTypeID='
           + CONVERT(VARCHAR(10), @LeaveTypeID) + ''

--PRINT @sql

EXEC Sp_executesql @sql 

答案 1 :(得分:0)

LeaveTypeID:1&amp; LeaveTypeName:获得的叶子&amp;现状:e&amp; DisplayOrder:1

select "LeaveTypeID:"||LeaveTypeID ||" & LeaveTypeName :"||LeaveTypeName ||" & Status :"||Status ||" & DisplayOrder:"||DisplayOrder from table;
相关问题