0
votes

Ajoutez une colonne avec une sous-chaîne d'une autre colonne dans SQL (flocon de neige)

Je me sens comme si cela devrait être simple mais je suis relativement non qualifié dans SQL et je ne peux pas sembler le savoir. Je suis habitué à maîtriser des données dans Python (Pandas) ou Spark (généralement Pyspark), ce serait un one-liner dans l'une ou l'autre de ceux-ci. Spécifiquement, j'utilise Snowflake SQL, mais je pense que cela est probablement pertinent pour beaucoup de saveurs de SQL.

essentiellement, je veux juste couper le premier caractère d'une colonne spécifique. Plus généralement, ce que j'essaie de faire est de remplacer une colonne avec une sous-chaîne de la même colonne. Je me contenterais même de créer une nouvelle colonne qui est une sous-chaîne d'une colonne existante. Je ne peux pas comprendre comment faire de ces choses.

sur une solution évidente serait de créer une table temporaire avec quelque chose comme xxx

et Ensuite, rejoignez-la et écrivez une nouvelle table xxx

Mes tables ont environ un milliard de rangées cependant et cela se sent extrêmement inefficace. J'ai peut-être tort? Peut-être que c'est juste la bonne façon de le faire? Je suppose que je pourrais remplacer le tableau Create Table2 comme ... à insérer écraser dans la table1 ... et au moins qui ne stockerait pas une copie supplémentaire du tout .

Toutes les pensées et idées sont les bienvenues. Je viens très humblement du point de vue de quelqu'un qui est déconcerté par une langue que tant de gens semblent maîtriser.


0 commentaires

3 Réponses :


1
votes

Vous n'avez pas essayé cela? xxx

-paul -


0 commentaires

2
votes

Je ne suis pas sûr de la syntaxe exacte / fonctionne dans le flocon de neige, mais de manière générale, il existe différentes façons de la réaliser. Je suppose que l'approche générale qui fonctionnerait universellement utilise la fonction de sous-chaîne disponible dans n'importe quelle base de données.

supposant que vous avez une table appelée Table1 avec les données suivantes: p>

update Table1 set Desc = SUBSTRING(Desc,2,len(desc))


2 commentaires

Ceci est exactement ce que je cherchais. SET Merci beaucoup.


C'est assez génial! Merci de votre aide, si vous êtes intéressé que la communauté Snowflake a sélectionné un programme Star Star, qui ajoute des points à votre profil si vous êtes un utilisateur de flocon de neige, consultez la page et inscrivez-vous si vous êtes intéressé: Community.Snowflake.com/s/SelectStar



0
votes

Il n'est pas nécessaire de spécifier la longueur, comme en témoigne le mode de test simple suivant:

Sélectionnez 1 $ , Substrateur (1, 2) , Droite (1, -2 $) Des valeurs ('abcde') , ('BCD') , ('CDEF') , ('Defghi') , ('e') , ('fg') , ('') ;

Les deux expressions ici - substr (, 2) et droit (, -2) - retirez efficacement le premier caractère du Valeur de la colonne.

Quant à la stratégie d'utilisation de la mise à jour par rapport à l'échec de l'insertion, je ne crois pas qu'il y aura une différence de performance ou de résultat, donc je pourrais opter pour la mise à jour car elle est plus simple. Donc, en conclusion, j'utiliserais:

mise à jour tableX Ensemble columny = substr (columny, 2) ;


0 commentaires