web-dev-qa-db-fra.com

Comment utiliser la fonction CONCAT dans SQL Server 2008 R2?

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

Msg 195, niveau 15, état 10, ligne 7
'CONCAT' n'est pas un nom de fonction intégrée reconnu.

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

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

93

CONCAT est une nouveauté de SQL Server 2012. Le lien que vous avez donné le précise, ce n'est pas une fonction de versions précédentes , y compris 2008 R2.

Vous pouvez voir qu'il fait partie de SQL Server 2012 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 fait remarquer avec gentillesse que SQL Server fournit une implémentation de la fonction ODBC CONCAT .

63
ta.speot.is

Juste pour être complet - dans SQL 2008, vous utiliseriez l’opérateur plus + pour effectuer la concaténation de chaînes.

Examinez le référence MSDN avec un exemple de code. À partir de SQL 2012, vous souhaiterez peut-être utiliser le nouveau fonction CONCAT .

99
Lynn Langit

Je vous suggère de jeter toutes les colonnes avant de les concatater

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

Cela devrait fonctionner pour vous.

40
vasin1987

Comme indiqué, CONCAT n'est pas pris en charge avant SQL Server 2012. Toutefois, vous pouvez concaténer simplement à l'aide de l'opérateur +, comme suggéré. Mais attention, cet opérateur émettra une erreur si le premier opérande est un nombre puisqu'il pense ajouter et non concaténer. Pour résoudre ce problème, ajoutez simplement '' devant. Par exemple

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

générera une erreur MAIS '' + someNumber + 'someString' + ...... fonctionnera parfaitement.

De plus, s’il ya deux nombres à concaténer, assurez-vous d’ajouter un '' entre eux, comme suit

.... + someNumber + '' + someOtherNumber + .....
23
kuklei

NULL Chute sûre des approximations de remplacement pour la fonction CONCAT de SQL Server 2012

SQL Server 2012 :

SELECT CONCAT(data1, data2)

PRE 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, notamment @Martin Smith, @Svish et @ vasin1987.

Ces options ajoutent NULL à '' (chaîne vide) pour la conversion sécurisée 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 + operator est extensible à plusieurs arguments. comme requis.

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

4
Troy Sheaffer
(city + ', ' + state + ' ' + Zip) as ctstzip for select
(city + ', ' + state + ' ' + Zip) for insert

Convertissez ou convertissez uniquement si un type de champ est différent des autres.

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

c'est à dire.

Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + Zip))
3
Antonio Perez