我想将表行数据作为单个字符串以及列名称(使用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......`
我怎样才能做到这一点?
由于
答案 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;