Ok, więc bezskutecznie szukałem odpowiedzi na to w Technet.
Chcę po prostu wydrukować zmienną całkowitą połączoną z dwiema zmiennymi typu String.
To jest mój kod, który nie działa:
print 'There are ' + @Number + ' alias combinations did not match a record'
Wydaje się, że to taka podstawowa funkcja, nie wyobrażałem sobie, że nie jest to możliwe w T-SQL. Ale jeśli nie jest to możliwe, powiedz to. Nie mogę znaleźć prostej odpowiedzi.
sql
sql-server
tsql
Joel Coehoorn
źródło
źródło
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
Odpowiedzi:
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 */
źródło
Liczby mają wyższy priorytet niż łańcuchy, więc oczywiście
+
operatorzy chcą przekształcić ciągi znaków w liczby przed dodaniem.Mógłbyś:
lub skorzystaj z (raczej ograniczonych) możliwości formatowania
RAISERROR
:RAISERROR('There are %i alias combinations did not match a record',10,1,@Number) WITH NOWAIT
źródło
print
instrukcjami, per se. T-SQL to bardzo prosty, dość staromodny język. W T-SQL wszystkie dane wejściowe dla operatora muszą być tego samego typu.Nie można łączyć ciągu znaków i liczb. Musisz przekonwertować liczbę na ciąg za pomocą CONVERT lub CAST.
Na przykład:
lub
źródło
Sprawdź dwukrotnie, czy ustawiłeś i wartość początkową dla wartości int i dziesiętnych do wydrukowania.
Ten przykład drukuje pusty wiersz
declare @Number INT print 'The number is : ' + CONVERT(VARCHAR, @Number)
A ta próbka to drukowanie -> Liczba to: 1
declare @Number INT = 1 print 'The number is : ' + CONVERT(VARCHAR, @Number)
źródło
Możesz spróbować tego,
declare @Number INT = 5 print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
źródło