Reputation:
Ok so I have searched for an answer to this on Technet, to no avail.
I just want to print an integer variable concatenated with two String variables.
This is my code, that doesn't run:
print 'There are ' + @Number + ' alias combinations did not match a record'
It seems like such a basic feature, I couldn't imagine that it is not possible in T-SQL. But if it isn't possible, please just say so. I can't seem to find a straight answer.
Upvotes: 122
Views: 230435
Reputation: 3055
If you don't want to manually cast types, you can use the CONCAT
-function for this.
PRINT CONCAT('There are ', @Number, ' alias combinations did not match a record')
Upvotes: 18
Reputation: 8865
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 */
Upvotes: 197
Reputation: 149
Double check if you have set and initial value for int and decimal values to be printed.
This sample is printing an empty line
declare @Number INT
print 'The number is : ' + CONVERT(VARCHAR, @Number)
And this sample is printing -> The number is : 1
declare @Number INT = 1
print 'The number is : ' + CONVERT(VARCHAR, @Number)
Upvotes: 2
Reputation: 76
You can't combine a character string and numeric string. You need to convert the number to a string using either CONVERT or CAST.
For example:
print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record'
or
print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record'
Upvotes: 3
Reputation: 937
You may try this one,
declare @Number INT = 5
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
Upvotes: 1
Reputation: 239734
Numbers have higher precedence than strings so of course the +
operators want to convert your strings into numbers before adding.
You could do:
print 'There are ' + CONVERT(varchar(10),@Number) +
' alias combinations did not match a record'
or use the (rather limited) formatting facilities of RAISERROR
:
RAISERROR('There are %i alias combinations did not match a record',10,1,@Number)
WITH NOWAIT
Upvotes: 13