Supprimer les valeurs de tableau dans pgSQL
Est-il un moyen de supprimer une valeur d'un tableau dans pgSQL? Ou pour être plus précis, à la pop de la dernière valeur? À en juger par cette liste la réponse semble être non. Je peux obtenir le résultat que je veux avec un index supplémentaire pointeur, mais c'est un peu lourd.
Vous devez vous connecter pour publier un commentaire.
Non, je ne pense pas que vous le pouvez. Au moins pas sans écrire quelque chose de laid comme:
Dans la version 9.3 et ci-dessus, vous pouvez faire:
array_remove()
comme indiqué: sqlfiddle.com/#!15/03d32/1/0array_pop()
fonction, qui est ce que l'OP est de demander.La façon la plus simple de supprimer la dernière valeur:
Je ne suis pas sûr au sujet de votre contexte, mais ce devrait vous donner quelque chose à travailler avec:
Il y a un moyen SIMPLE de supprimer une valeur dans un tableau dans la PLAINE SQL:
il va supprimer toutes les valeurs NULLES de la matrice. Le résultat sera:
Voici une fonction que j'utilise pour integer[] tableaux
C'est évidemment pour l'entier des tableaux mais peut être modifié pour ANYARRAY ANYELEMENT
Je suis en cours d'exécution sur 9.2 et je suis en mesure d'exécuter ceci:
ou vous pouvez passer au large de la face de l'élément avec le même genre de chose:
Attention, les programmeurs -- pour une raison encore inconnue de la science, de la pgsql tableaux commençant à l'indice 1 au lieu de 0-indexé.
J'ai créé un array_pop fonction de sorte que vous pouvez supprimer un élément avec la valeur connue à partir d'un tableau.
il y a aussi un résumé de la version https://gist.github.com/1392734
Essayez ceci:
Ma fonction pour tous les types de tableaux.
Fonction externe:
Fonction intérieure: