通常不鼓励基于序数位置选择列数据,但某些情况下可能需要使用它。本问题探讨了 SQL Server 中进行此类选择的可能性。
问题:
我们可以使用表列的序数位置检索列数据吗?作为示例,请考虑下表:
create table Test( Col1 int, Col2 nvarchar(10) )
不要使用列名称进行选择:
select Col2 from Test
我们可以写:
select "2" from Test -- for illustration purposes only
答案:
虽然 SQL Server 本身不支持通过以下方式选择列序数位置,可以通过利用笛卡尔积运算来实现解决方法:
select NULL as C1, NULL as C2 where 1 = 0 -- Returns empty table with predefined column names union all select * from Test -- There should be exactly 2 columns, but names and data type doesn't matter
这会生成一个包含两列([C1] 和 [C2])的表,与测试中的列数相匹配桌子。通过选择此笛卡尔积的第二列,我们可以有效地从测试表的第二列中检索数据。
请注意,此方法仅适用于具有预定义列数的表。将其用于具有大量列的表可能效率低下且容易出错。
以上是SQL Server 可以使用序数位置检索列数据吗?的详细内容。更多信息请关注PHP中文网其他相关文章!