Je cherchais une CONCAT
fonction dans SQL Server 2008 R2. J'ai trouvé le lien pour cette fonction . Mais lorsque 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é reconnu.
La CONCAT
fonction existe- t-elle dans SQL Server 2008 R2?
Sinon, comment concaténer des chaînes dans SQL Server 2008 R2?
sql-server
sql-server-2008
tsql
Mitesh Budhabhatti
la source
la source
CONCAT
soit nouveau pour 2012.Réponses:
CONCAT
est une nouveauté de SQL Server 2012. Le lien que vous avez donné le montre clairement, ce n'est pas une fonction sur les versions précédentes , y compris 2008 R2.Le fait qu'il fasse partie de SQL Server 2012 peut être vu dans l'arborescence du document:
EDIT Martin Smith souligne utilement que SQL Server fournit une implémentation de la
CONCAT
fonction ODBC .la source
SELECT {fn concat ('foo', 'bar')};
dans les versions précédentes. N'accepte que 2 paramètres cependant.+
opérateur, comme le mentionne @ lynn-langit dans sa réponse, ce que j'ai totalement manqué au début car je n'ai lu que la réponse acceptée ...+
se comporte différemment, les résultats pourSELECT 'A' + 'B' + 'C'
vsSELECT CONCAT('A', 'B', 'C')
vsSELECT 'A' + 'B' + NULL
vsSELECT CONCAT('A', 'B', NULL)
sontABC
,ABC
,NULL
,AB
NULL
, donc+
a très bien fonctionné :)Juste pour être complet - dans SQL 2008, vous utiliseriez l'
+
opérateur plus pour effectuer la concaténation de chaînes.Jetez un œil à la référence MSDN avec un exemple de code. À partir de SQL 2012, vous souhaiterez peut-être utiliser la nouvelle fonction CONCAT .
la source
Je vous suggère de lancer toutes les colonnes avant de les concater
Cela devrait fonctionner pour vous.
la source
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 lèvera une erreur si le premier opérande est un nombre car il pense qu'il va ajouter et non concaténer. Pour résoudre ce problème, ajoutez simplement «» devant. Par exemple
générera une erreur MAIS
'' + someNumber + 'someString' + ......
fonctionnera très bien.De plus, s'il y a deux nombres à concaténer, assurez-vous d'ajouter un '' entre eux, comme ceci
la source
SELECT 'varchar(' + 5 + ')'
jette l'erreur "La conversion a échoué lors de la conversion de la valeur nvarchar 'varchar (' en type de données int", donc je suppose que votre réponse ne tient pas.Abandon sécurisé NULL dans les 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 s'ajoutent
NULL
à la''
conversion (chaîne vide) pour uneNULL
manipulation sûre tout en tenant compte du comportement variable de l'+
opérateur concernant des opérandes spécifiques.Notez que la solution ODBC Scaler Function est limitée à 2 arguments alors que l' approche
+
opérateur est évolutive à de nombreux arguments selon les besoins.Notez également le problème potentiel identifié par @Swifty concernant la
varchar
taille par défaut corrigée ici parvarchar(MAX)
.la source
Ne cast ou convertir que si un type de champ est différent des autres.
Lors de l'insertion, la valeur doit être au bon endroit où vous devez l'insérer. L'utilisation de "as" vous donnera une erreur.
c'est à dire
la source
Oui, la fonction n'est pas dans SQL 2008. Vous pouvez utiliser l'opération de conversion pour le faire.
Par exemple, nous avons une
employee
table et vous voulezname
avecapplydate
.afin que vous puissiez utiliser
Cela fonctionnera là où la fonction concat ne fonctionne pas.
la source