2014-05-09 8 views
37

Ok, also habe ich auf Technet eine Antwort darauf gesucht, vergeblich.Integer-Variable und String in derselben Zeile in SQL drucken

Ich möchte nur eine ganze Zahl mit zwei String-Variablen verkettet drucken.

Dies ist mein Code, die nicht ausgeführt wird:

print 'There are ' + @Number + ' alias combinations did not match a record' 

Es ist wie eine solche Grundzug scheint, ich konnte mir nicht vorstellen, dass es nicht möglich, in T-SQL ist. Aber wenn es nicht möglich ist, sag es bitte einfach. Ich kann keine klare Antwort finden.

+1

'print 'Es gibt' + CAST (@number AS NVARCHAR (100)) + 'Alias-Kombinationen stimmen nicht mit einem Datensatz überein' – potashin

Antwort

57
declare @x INT = 1 

PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record' 
+0

Ich mag die Cast-Methode. Kurz und gut, und behält die ursprüngliche Variable als Int, die ich brauche. – FluffyKittens

+0

Ha, ich hätte es sofort akzeptiert, aber es würde mich für weitere 6 Minuten nicht lassen. – FluffyKittens

4

Zahlen haben higher precedence als Strings, also natürlich die + Operatoren möchten Ihre Strings in Zahlen vor dem Hinzufügen konvertieren.

Sie könnten tun:

print 'There are ' + CONVERT(varchar(10),@Number) + 
     ' alias combinations did not match a record' 

oder verwenden Sie die (eher begrenzt) Formatierungsmöglichkeiten von RAISERROR:

RAISERROR('There are %i alias combinations did not match a record',10,1,@Number) 
WITH NOWAIT 
+0

Vielen Dank für die Hintergrundinformationen. Ich habe nicht erkannt, dass T-SQL beim Drucken von einfachen Ausdrucken so viel Wert auf den Vorrang gelegt hat. – FluffyKittens

+0

@AdamJ -es hat nichts mit "Print" -Aussagen zu tun, per se. T-SQL ist eine sehr einfache, ziemlich altmodische Sprache. In T-SQL müssen alle Eingaben für einen Operator vom selben Typ sein. –

+0

Danke! Ich glaube, ich vergesse manchmal, dass SQL in den 70er Jahren erstellt wurde. SQL Server hat (meiner Meinung nach) ein recht schlankes Aussehen, was meiner Meinung nach es moderner erscheinen lässt, als es wirklich ist. – FluffyKittens

0

Sie versuchen diese können

declare @Number INT = 5        
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record' 
2

Sie können eine Zeichenfolge und eine Zahl nicht kombinieren ic-Zeichenfolge. Sie müssen die Zahl mit CONVERT oder CAST in eine Zeichenfolge konvertieren.

Zum Beispiel:

print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record' 

oder

print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record' 
0

Überprüfen Sie, ob Sie Anfangswert für int und Dezimalwerte gedruckt werden gesetzt und haben.

Dieses Beispiel druckt eine leere Zeile

declare @Number INT 
print 'The number is : ' + CONVERT(VARCHAR, @Number) 

Und diese Probe ist Druck -> Die Nummer lautet: 1

declare @Number INT = 1 
print 'The number is : ' + CONVERT(VARCHAR, @Number) 
Verwandte Themen