web-dev-qa-db-fra.com

Imprimer une variable entière et une chaîne sur la même ligne en SQL

Ok, j'ai donc cherché une réponse à cela sur Technet, en vain.

Je veux juste imprimer une variable entière concaténée avec deux variables de chaîne.

Ceci est mon code, ça ne marche pas:

print 'There are ' + @Number + ' alias combinations did not match a record'

Cela ressemble à une telle fonctionnalité de base, je ne pouvais pas imaginer que ce ne soit pas possible dans T-SQL. Mais si ce n'est pas possible, dites-le-moi s'il vous plaît. Je n'arrive pas à trouver une réponse directe.

66
user2993456
declare @x INT = 1 

PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record'
108
mohan111

Les nombres ont priorité plus élevée que les chaînes. Bien entendu, les opérateurs + veulent convertir vos chaînes en nombres avant de les ajouter.

Vous pourriez faire:

print 'There are ' + CONVERT(varchar(10),@Number) +
      ' alias combinations did not match a record'

ou utilisez les possibilités de formatage (plutôt limitées) de RAISERROR :

RAISERROR('There are %i alias combinations did not match a record',10,1,@Number)
WITH NOWAIT

Vous ne pouvez pas combiner une chaîne de caractères et une chaîne numérique. Vous devez convertir le nombre en chaîne en utilisant soit CONVERT, soit CAST.

Par exemple:

print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record'

ou

print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record'
3
BigBlue

Vérifiez si vous avez défini et valeur initiale pour les valeurs int et décimales à imprimer.

Cet exemple imprime une ligne vide

declare @Number INT
print 'The number is : ' + CONVERT(VARCHAR, @Number)

Et cet exemple est en cours d'impression -> Le numéro est le suivant: 1

declare @Number INT = 1
print 'The number is : ' + CONVERT(VARCHAR, @Number)
2
Selim Özbudak

Vous pouvez essayer celui-ci,

declare @Number INT = 5                            
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'
1
BAdmin