Хорошо, я искал ответ на этот вопрос на Technet, но безрезультатно.
Я просто хочу напечатать целочисленную переменную, объединенную с двумя переменными String.
Это мой код, который не запускается:
print 'There are ' + @Number + ' alias combinations did not match a record'
Это такая базовая функция, что я не мог представить, что это невозможно в T-SQL. Но если это невозможно, просто скажите об этом. Кажется, я не могу найти прямого ответа.
sql
sql-server
tsql
Джоэл Кохорн
источник
источник
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
Ответы:
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 */
источник
Числа имеют более высокий приоритет, чем строки, поэтому, конечно,
+
операторы хотят преобразовать ваши строки в числа перед добавлением.Вы могли сделать:
или используйте (довольно ограниченные) возможности форматирования
RAISERROR
:RAISERROR('There are %i alias combinations did not match a record',10,1,@Number) WITH NOWAIT
источник
print
утверждениям. T-SQL - очень простой, довольно старомодный язык. В T-SQL все входные данные оператора должны быть одного типа.Вы не можете комбинировать символьную строку и числовую строку. Вам нужно преобразовать число в строку, используя CONVERT или CAST.
Например:
или же
источник
Дважды проверьте, если вы установили и начальное значение для целых и десятичных значений для печати.
В этом примере печатается пустая строка
declare @Number INT print 'The number is : ' + CONVERT(VARCHAR, @Number)
И этот образец печатается -> Номер: 1
declare @Number INT = 1 print 'The number is : ' + CONVERT(VARCHAR, @Number)
источник
Вы можете попробовать это,
declare @Number INT = 5 print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
источник