我有一个表,它将数据返回为 -
Column1 Column2 Column3 Column4 Column5 Column6
-------------------------------------------------------------------
6 Joy Mycity NZ 123456 myemail@gamil.com
我需要将其显示为 -
SingleColumn
-----------------------
6
joy
mycity
NZ
123456
myemail@gmail.com
我该怎么做?
答案 0 :(得分:3)
我会使查询继续以您当前的形式返回数据,作为单独的列,而是根据需要使UI代码格式化。使其更加灵活,因此您可以使用与数据源相同的查询来显示相同数据的x个不同显示。
答案 1 :(得分:0)
也许我错过了一些东西,但你不能做到
SELECT col1 +''+ col2 + ....将它们连接在一起。
答案 2 :(得分:0)
如果您“需要以这种形式显示”数据,我首先会从数据库中检索数据 - 可能是从一个表中的一行中的一行 - 然后使用用于的工具/语言检索数据(C#,Java,无论如何)以格式化数据,因为它需要显示数据或显示数据。 SQL旨在存储和检索数据,而不是将其格式化以便在屏幕上显示。
话虽如此,如果我必须从一个表的一行中的5个单独的列返回(比方说)值,我会这样做:
SELECT Col1 as Data, 1 as MyOrder from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col2, 2 from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col3, 3from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col4, 4 from MyTable where MyTableId = @DesiredRow
UNION ALL SELECT Col5, 5 from MyTable where MyTableId = @DesiredRow
order by MyOrder
(必须查看格式是否正确...) 您只需在第一个选择中为列添加别名。嗯,会有其他注意事项,例如(1)返回列的数据类型将是第一个选择的数据类型,因此您可能需要进行大量的转换,例如
...select cast(Col1 as varchar(100)) As Data...
(2)它可能会按照它们被选中的顺序排序返回的行,我只是为了确定而按顺序抛出。并且,(3)您的里程可能会有所不同,具体取决于我目前不了解的应用考虑因素。
祝你好运!答案 3 :(得分:0)
SQL Server 2005带有PIVOT/UNPIVOT functions,它正是这样做的。
SELECT SingleColumn FROM
(SELECT CAST(Column1 AS VARCHAR(128)) AS c1,
CAST(Column2 AS VARCHAR(128)) AS c2,
CAST(Column3 AS VARCHAR(128)) AS c3,
CAST(Column4 AS VARCHAR(128)) AS c4,
CAST(Column5 AS VARCHAR(128)) AS c5,
CAST(Column6 AS VARCHAR(128)) AS c6
FROM (...) AS t
) AS p
UNPIVOT (SingleColumn FOR cols IN (c1, c2, c3, c4, c5, c6)) AS unp