2017-02-22 92 views
0

在SQL Server中,当我创建像一列:这一栏是什么类型的?

select *, '1' as test

这是什么新列即1的类型?

还有一个问题,我可以在其他表上引用此列吗?

+2

这可能取决于RDBMS ,最可能的是'Char(1)' –

+0

ANSI/ISO SQL:“<字符串文字>的声明类型是固定长度的字符串,<字符串文字>的长度是<它包含的字符表示“。即在这种情况下“字符(1)”。 – jarlh

回答

2

对于SQL Server,你可以回答这样的问题很容易使用sp_describe_first_result_set

exec sp_describe_first_result_set N'select *, ''1'' as test from sys.objects' 

产生一个结果集,最后一排,其中表明,该test列结果集是varchar(1)。 (在这种情况下,其他的结果,从sys.objects表拉动其他列说清楚,这个过程能够描述列作为非varchar(2)nvarchar(128)的,所以它不只是一个显示问题)

0

这个列有char(1)类型,是的,你可以在连接或其他操作中使用这个列。

因为它的值是''中的一个字符串如果你想要它是一个整数。你可以做到以下几点:

select *, Cast(1 as INT) as test FROM SomeTable 
+0

请参阅我的更新回答 –

+0

@DmitryBychenko - 这可能是更明智的结果,但它不是什么,例如, SQL Server产生。 –