2017-02-22 2 views
0

in SQL Server, wenn ich eine Spalte wie:Was ist der Typ dieser Spalte?

select *, '1' as test

was ist die Art dieser neuen Spalte d.h 1?

Nur noch eine Frage, kann ich diese Spalte auf andere Tabelle verweisen?

+2

Es auf RDBMS abhängen Am wahrscheinlichsten ist 'Char (1)' –

+0

ANSI/ISO SQL: "Der deklarierte Typ eines ist eine Zeichenkette fester Länge. Die Länge eines ist die Anzahl von < Zeichendarstellung> s, die es enthält. " d.h. "Zeichen (1)" in diesem Fall. – jarlh

Antwort

2

Für SQL Server, können Sie solche Fragen leicht sp_describe_first_result_set mit beantworten:

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

eine Ergebnismenge produziert, zeigt die letzte Zeile davon, dass die test Spalte, dass Ergebnismenge ist vom Typ varchar(1). (Weitere Ergebnisse in diesem Fall aus der sys.objects Tabelle sind die anderen Spalten ziehen deutlich machen, dass dieses Verfahren fähig ist, Spalten als nicht beschreiben varchar(2) oder nvarchar(128), so ist es nicht nur ein Problem mit der Anzeige)

0

Diese Spalte hat den Typ char (1) und Sie können diese Spalte auch in Joins oder anderen Manipulationen usw. verwenden.

weil sein Wert eine Zeichenkette in '' ist, wenn es eine ganze Zahl sein soll. Sie tun können, die folgenden:

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

Bitte sehen Sie meine aktualisierte Antwort –

+0

@ DmitryBychenko - das kann das sinnvollere Ergebnis sein, aber es ist nicht was z. SQL Server produziert. –