0
votes

Presto équivalent de CONCAT_WS

Je recherche une fonction dans Presto pour concater deux colonnes avec un séparateur comme le soulignement.


0 commentaires

4 Réponses :


0
votes

Gérer:

select substr( concat(case when col1 is not null then ',' || col1 else '' end,
                      case when col2 is not null then ',' || col2 else '' end

                     ),
                2
             )

Vous pouvez utiliser:

select concat_ws(',', col1, col2)

Cela concatène les valeurs non NULL dans une chaîne. La chaîne résultante commencera par une virgule. Le substr() supprime le premier caractère.


2 commentaires

presto ne prend pas en charge les opérateurs logiques sur les chaînes


@MTT. . . J'ai corrigé l'opérateur concat - et + n'est pas un opérateur logique , c'est un opérateur arithmétique .



-1
votes
select concat(col1, ',', col2) 

1 commentaires

. . Cette réponse n'est pas correcte. Il ne gère pas correctement les valeurs NULL .



0
votes

Vous recherchez ici la fonction array_join , voir la documentation .

array_join (x, délimiteur, remplacement_null) â † 'varchar

Concatène les éléments du tableau donné à l'aide du délimiteur et d'une chaîne facultative pour remplacer les valeurs nulles.

Exemple:
les colonnes sont c1, c2, vous pouvez bien sûr en ajouter plus:

WITH  demo_table (c1,c2) AS 
    (SELECT * FROM  (VALUES  (1,2),(3,4),(5,null),(7,8) ))
SELECT array_join(array[c1,c2], '_', 'NA')
FROM demo_table

Les résultats seront:
1_2
3_4
5_NA
7_8


0 commentaires

1
votes

Cela a été ajouté à Presto il y a quelques versions: https://prestosql.io/docs/current/functions/string.html

concat_ws(string0, string1, ..., stringN) → varchar#
Returns the concatenation of string1, string2, ..., stringN using string0 as a separator. If string0 is null, then the return value is null. Any null values provided in the arguments after the separator are skipped.

concat_ws(string0, array(varchar)) → varchar
Returns the concatenation of elements in the array using string0 as a separator. If string0 is null, then the return value is null. Any null values in the array are skipped.


0 commentaires