Reprise en masse par un update

Publié le par seekaftersomething.over-blog.com


Voici une petite syntaxte de requête sympa qui permet de faire une reprise en masse d'une colonne plutôt que de passer des requêtes unitaires.

Prenons pour exemple la table TAB_PRODUITS avec un champ NAME (en varchar2) qui contiennent les noms des produits.

Le nom des produits a pour format : PRODUIT_mm_yyyy où mm correspond au mois sur 2 chiffres et yyyy à l'année sur 4 chiffres.

Vous souhaitez renommer les produits en PRD-yy-mm.

Plutôt que d'extraire tous les produits de la table et de faire des requêtes unitaires, vous pouvez ne passer que par une seule requête :

 UPDATE TAB_PRODUITS SET NAME = 'PRD-' || substr(NAME,14,2) || '-' || substr(NAME,9,2); 


Les pipes " || " permettent de concaténer les chaines de caractères.

La fonction substr permet d'extraire dans le champ NAME (l'ancienne valeur) un morceau de la chaine de caractère.

Le premier chiffre correspond à la position (le premier caractère commence à la position 1).

La deuxième chiffre correspond au nombre de caractères que l'on souhaite extraire.


Voilà, c'est plus sympa que de faire des milliers de requêtes.

Publié dans SQL

Commenter cet article