Ok, ich habe auf Technet nach einer Antwort darauf gesucht, ohne Erfolg.
Ich möchte nur eine ganzzahlige Variable drucken, die mit zwei String-Variablen verkettet ist.
Dies ist mein Code, der nicht ausgeführt wird:
print 'There are ' + @Number + ' alias combinations did not match a record'
Es scheint eine so grundlegende Funktion zu sein, dass ich mir nicht vorstellen kann, dass dies in T-SQL nicht möglich ist. Aber wenn es nicht möglich ist, sagen Sie es einfach. Ich kann keine klare Antwort finden.
sql
sql-server
tsql
Joel Coehoorn
quelle
quelle
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
Antworten:
declare @x INT = 1 /* Declares an integer variable named "x" with the value of 1 */ PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record' /* Prints a string concatenated with x casted as a varchar */
quelle
Zahlen haben eine höhere Priorität als Zeichenfolgen, daher
+
möchten die Operatoren Ihre Zeichenfolgen natürlich vor dem Hinzufügen in Zahlen konvertieren.Du könntest es tun:
oder verwenden Sie die (eher eingeschränkten) Formatierungsmöglichkeiten von
RAISERROR
:RAISERROR('There are %i alias combinations did not match a record',10,1,@Number) WITH NOWAIT
quelle
print
Aussagen zu tun . T-SQL ist eine sehr einfache, ziemlich altmodische Sprache. In T-SQL müssen alle Eingaben in einen Operator vom gleichen Typ sein.Sie können eine Zeichenfolge und eine numerische Zeichenfolge nicht kombinieren. Sie müssen die Zahl entweder mit CONVERT oder CAST in eine Zeichenfolge konvertieren.
Zum Beispiel:
oder
quelle
Überprüfen Sie noch einmal, ob Sie einen Anfangs- und Anfangswert für die zu druckenden Int- und Dezimalwerte festgelegt haben.
In diesem Beispiel wird eine leere Zeile gedruckt
declare @Number INT print 'The number is : ' + CONVERT(VARCHAR, @Number)
Und dieses Beispiel wird gedruckt -> Die Nummer lautet: 1
declare @Number INT = 1 print 'The number is : ' + CONVERT(VARCHAR, @Number)
quelle
Sie können dieses versuchen,
declare @Number INT = 5 print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
quelle