2017-02-22 4 views
0

В SQL Server, когда я создаю столбец как:Каков тип этого столбца?

select *, '1' as test

, что является тип этого нового столбца 1 т.е.?

Еще один вопрос, могу ли я указать этот столбец на другой стол?

+2

Это может зависеть от RDBMS , наиболее вероятным является 'Char (1)' –

+0

ANSI/ISO SQL: «Объявленный тип <символьного строкового литерала> является символьной строкой фиксированной длины. Длина строкового литерала - это число < символьное представление> s, которое оно содержит. " то есть «символ (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 производит. –

Смежные вопросы