如何在sql server中选择没有名称的列?

时间:2013-04-06 07:52:21

标签: sql sql-server

如何

select name,family from student where name="X" 

没有列名。

例如:

select "column1","column2" from student where "column1"="x"

或者例如

select "1","2" from student where "1"="x"

“1”是column1 “2”是第2列

我不想说列名。我想说出它的号码或其他...... 从精选*累了累了。但它只是因为我不知道列名称,但我知道它们在哪里。我的列名称每次都要更改,但我的数据是相同的,并且数据在每个文件的相同列中。

6 个答案:

答案 0 :(得分:3)

虽然您不能在SELECT语句中使用字段位置说明符,但SQL标准包括INFORMATION_SCHEMA,其中定义了表的字典。这包括COLUMNS视图,其中定义了所有表的所有字段。在此视图中,有一个名为ORDINAL_POSITION的字段,您可以使用该字段来帮助解决此问题。

如果您查询

SELECT ORDINAL_POSITION, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TABLE'
ORDER BY ORDINAL_POSITION

然后你可以获得你想要的序数位置的列名。从那里你可以准备一个SQL语句。

答案 1 :(得分:1)

您可以将临时表用作:

DECLARE @TB TABLE(Column1 NVARCHAR(50),...)
INSERT @TB
SELECT * FROM student 

然后使用它:

SELECT Column1 FROM @TB WHERE Column1='aa'

答案 2 :(得分:0)

不,您不能在SELECT子句中使用序数(数字)位置。只有按你的顺序才能。

但是你可以创建自己的列别名......

Select Column1 as [1] From Table

答案 3 :(得分:0)

您可以使用别名:

SELECT name AS [1], family AS [2] FROM student WHERE name="X"

答案 4 :(得分:0)

这是不可能的。不幸的是,他们没有考虑table_schema不可用的表值函数,所以祝你好运。

答案 5 :(得分:0)

如果它是一个字符串,你可以这样做:

Select Column1 + '' From Table

如果它是一个数字,你可以这样做:

Select Column1 + 0 From Table

如果是日期时间,您可以这样做:

Select dateadd(d, 0, Column1) From Table

同样适用于其他数据类型..