Comment accéder au dernier élément dans un tableau ?
Dans mon tableau de la ruche, la session
champ est une chaîne de caractères dans le format comme:
ip-sessionID-userID
ou area-sessionID-userID
Il y a 3 ou 4 champs séparés par des "-
", mais le nom d'utilisateur est toujours le dernier.
je veux sélectionner l'identifiant, mais comment accéder à la dernière zone? En python, il existe quelque chose comme:
arr[-1]
mais dans la ruche, comment faire? Le SQL suivant ne semble pas correcte.
select split(session,"\-")[-1] as user from my_table;
Merci!
Vous devez vous connecter pour publier un commentaire.
Bien que cela pourrait être un peu plus cher que les regex solution 😉
Parce que les expressions constantes pour les index de tableau sont pas pris en charge dans la ruche.
Il y aura quelques autres façons de résoudre votre problème:
utilisation
regexp_extract
, tels que :sélectionnez regexp_extract(session, '(\-[^\-]+)', 1) en tant qu'utilisateur de ma_table;
utilisation personnalisée de la ruche de la fonction : exemple de document et peut être trouvé dans la ruche document
regexp_extract(session, '([^\-]+)$', 1)
?Je pense que la suite serait plus rapide que la solution de @arno_v, car il inverse le point de vue des éléments de tableau, au lieu de l'ensemble de la chaîne, et ne marche arrière une fois:
Une méthode plus sans
reverse
, à l'aide du tableausize()-1
. Cette méthode est plus efficace car elle ne produit pas d'intermédiaire chaîne inversée, il fonctionne uniquement avec tableau.