Ok, he buscado una respuesta a esto en Technet, sin éxito.
Solo quiero imprimir una variable entera concatenada con dos variables String.
Este es mi código, que no se ejecuta:
print 'There are ' + @Number + ' alias combinations did not match a record'
Parece una característica tan básica que no puedo imaginar que no sea posible en T-SQL. Pero si no es posible, dígalo. Parece que no puedo encontrar una respuesta directa.
sql
sql-server
tsql
Joel Coehoorn
fuente
fuente
print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record'
Respuestas:
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 */
fuente
Los números tienen mayor precedencia que las cadenas, por lo que, por supuesto, los
+
operadores quieren convertir sus cadenas en números antes de sumar.Podrías hacerlo:
o utilice las funciones de formato (bastante limitadas) de
RAISERROR
:RAISERROR('There are %i alias combinations did not match a record',10,1,@Number) WITH NOWAIT
fuente
print
declaraciones, per-se. T-SQL es un lenguaje muy simple y bastante anticuado. En T-SQL, todas las entradas a un operador deben ser del mismo tipo.No puede combinar una cadena de caracteres y una cadena numérica. Necesita convertir el número en una cadena usando CONVERT o CAST.
Por ejemplo:
o
fuente
Verifique si ha establecido un valor inicial para los valores int y decimales que se imprimirán.
Esta muestra está imprimiendo una línea vacía
declare @Number INT print 'The number is : ' + CONVERT(VARCHAR, @Number)
Y esta muestra está imprimiendo -> El número es: 1
declare @Number INT = 1 print 'The number is : ' + CONVERT(VARCHAR, @Number)
fuente
Puedes probar este
declare @Number INT = 5 print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
fuente