web-dev-qa-db-fra.com

SQL Server: le meilleur moyen de concaténer plusieurs colonnes?

J'essaie de concaténer plusieurs colonnes dans une requête dans SQL Server 11.00.3393.

J'ai essayé la nouvelle fonction CONCAT() mais cela ne fonctionne pas lorsque j'utilise plus de deux colonnes.

Je me demande donc si c'est le meilleur moyen de résoudre le problème:

SELECT CONCAT(CONCAT(CONCAT(COLUMN1,COLUMN2),COLUMN3),COLUMN4) FROM myTable

Je ne peux pas utiliser COLUMN1 + COLUMN2 à cause des valeurs NULL.

MODIFIER

Si j'essaie SELECT CONCAT('1','2','3') AS RESULT j'obtiens une erreur 

La fonction CONCAT nécessite 2 argument (s)

12
D. Caan

Il est clair par le discours que le problème réside dans l’utilisation de VS2010 pour écrire la requête, car elle utilise la fonction canonique CONCAT() qui est limitée à 2 paramètres. Il y a probablement un moyen de changer cela, mais je ne suis pas au courant.

Une alternative:

SELECT '1'+'2'+'3'

Cette approche nécessite que les valeurs non-chaîne soient converties/converties en chaînes, ainsi que la gestion de NULL via ISNULL() ou COALESCE():

SELECT  ISNULL(CAST(Col1 AS VARCHAR(50)),'')
      + COALESCE(CONVERT(VARCHAR(50),Col2),'')
14
Hart CO
SELECT CONCAT(LOWER(LAST_NAME), UPPER(LAST_NAME)
       INITCAP(LAST_NAME), HIRE DATE AS ‘up_low_init_hdate’)
FROM EMPLOYEES
WHERE HIRE DATE = 1995
2
JUVA

Blockquote

Utiliser la concaténation dans Oracle SQL est très simple et intéressant. Mais je ne connais pas grand chose à propos de MS-SQL.

Blockquote

Ici nous allons pour Oracle: Syntaxe: SQL> select First_name||Last_Name as Employee from employees;

Résultat: EMPLOYÉ

EllenAbel SundarAnde MozheAtkinson

Ici AS: mot clé utilisé comme alias . Nous pouvons concaténer avecNULLvalues ​​. Ex. : columnm1 || Null

Supposons que l'une de vos colonnes contienne une valeurNULLalors le résultat ne montrera que la valeur de cette colonne qui a une valeur. 

Vous pouvez également utiliser littéral chaîne de caractères dans la concaténation. 

par exemple. select column1||' is a '||column2 from tableName; Résultat: column1 est une colonne2 ., entre littéraux, doit être indiqué entre guillemets simples. vous pouvez exclure les nombres.

NOTE: Ceci ne concerne que le serveur Oracle // SQL.

0
Suraj Shrivastava

Essayez d'utiliser ci-dessous:

SELECT 
    (RTRIM(LTRIM(col_1))) + (RTRIM(LTRIM(col_2))) AS Col_newname,
    col_1,
    col_2 
FROM 
    s_cols 
WHERE
    col_any_condition = ''
;
0
user7912960