Comment utiliser la fonction CONCAT dans SQL Server 2008 R2?

Je cherchais une fonction CONCAT dans SQL Server 2008 R2. J' trouvé le lien pour cette fonction. Mais quand j'utilise cette fonction, il donne l'erreur suivante:

Msg 195, Niveau 15, État 10, Ligne 7
'CONCAT' n'est pas un nom de fonction intégré reconnu.

La fonction CONCAT Existe-t-elle dans SQL Server 2008 R2?

Sinon, comment concaténer des chaînes dans SQL Server 2008 R2?

88
demandé sur George Stocker 2012-05-11 15:17:11

6 réponses

CONCAT est nouveau pour SQL Server 2012. Le lien que vous avez donné le rend clair, ce n'est pas une fonction sur Versions précédentes , y compris 2008 R2.

Qu'il fait partie de SQL Server 2012 peut être vu dans l'arborescence du document:

SQL Server 2012  
Product Documentation  
Books Online for SQL Server 2012  
Database Engine  
  Transact-SQL Reference (Database Engine)  
    Built-in Functions (Transact-SQL)  
      String Functions (Transact-SQL)  

EDIT Martin Smith souligne utilement que SQL Server fournit une implémentation de la fonction CONCAT D'ODBC.

61
répondu ta.speot.is 2012-05-11 14:48:45

Juste pour l'exhaustivité-dans SQL 2008, vous utiliseriez l'opérateur plus + pour effectuer la concaténation de chaîne.

Jetez un oeil à la référence MSDN avec un exemple de code. À partir de SQL 2012, vous pouvez utiliser la nouvelle fonction CONCAT .

93
répondu Lynn Langit 2016-06-08 21:12:12

Je vous suggère de lancer toutes les colonnes avant de les concater

cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)

Cela devrait fonctionner pour vous.

37
répondu vasin1987 2014-02-11 13:08:36

CONCAT, comme indiqué, n'est pas pris en charge avant SQL Server 2012. Cependant, vous pouvez concaténer simplement en utilisant l'opérateur + comme suggéré. Mais attention, cet opérateur lancera une erreur si le premier opérande est un nombre car il pense qu'il ajoutera et non concaténera. Pour résoudre ce problème il suffit d'ajouter " en avant. Par exemple

someNumber + 'someString' + .... + lastVariableToConcatenate

Déclenchera une erreur mais '' + someNumber + 'someString' + ...... fonctionnera très bien.

Aussi, s'il y a deux nombres à concaténer, assurez-vous d'ajouter un " entre eux, comme ça

.... + someNumber + '' + someOtherNumber + .....
22
répondu kuklei 2013-12-02 10:02:57

NULL safe drop dans les approximations de remplacement pour SQL Server 2012 CONCAT function

serveur SQL 2012:

SELECT CONCAT(data1, data2)

pré SQL 2012 (deux Solutions):

SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}

SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')

Ces deux solutions rassemblent plusieurs excellentes réponses et mises en garde soulevées par d'autres affiches, y compris @Martin Smith, @Svish et @vasin1987.

Ces options ajoutent NULL à '' (chaîne vide) pour une manipulation sûre de NULL tout en tenant compte du comportement variable de l'opérateur + relatif à des opérandes spécifiques.

Notez que la solution ODBC Scaler Function est limitée à 2 arguments alors que + l'approche de l'opérateur est évolutive pour de nombreux arguments au besoin.

Notez également le problème potentiel identifié par @ Swifty concernant la taille par défaut varchar ici corrigé par varchar(MAX).

3
répondu Troy Sheaffer 2017-11-22 18:27:47
(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert

Ne convertit ou ne convertit que si un type de champ est différent des autres.

Lors de l'insertion, la valeur doit être au bon endroit, vous devez l'insérer. L'utilisation de " as " vous donnera une erreur.

C'est-à-dire

Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))
2
répondu Antonio Perez 2016-08-25 17:51:41