0
votes

mettre à jour le premier caractère de la colonne, dans les requêtes Oracle

J'ai une table "factures". La table est de 190 000 rangées. Mais il y a un problème. Dans la colonne "Docnumber", tous les enregistrements de ce format "Y-1000", "Y-1000", "Y-1001" et je souhaite être liés à tous les enregistrements de Y à P. qu'il y avait tous des enregistrements de ce format "P-1000", " P-1001 ". Mais je ne comprends pas comment faire correctement, je vous serai reconnaissant de l'aide!


2 commentaires

Jetez un coup d'œil à la fonction remplacer . docs.oracle.com/cd/e11882_01/server. 112 / E41084 / ...


@APC Toutes ces valeurs numériques DOC commencent par "y-"!)


3 Réponses :


4
votes

Vous pouvez utiliser des fonctions de chaîne. Ce qui suit remplace le premier caractère de chaque valeur de la colonne avec 'p' : xxx

en fonction de votre exigence réelle, vous pouvez être un peu plus précis, car Exemple en garantissant que docnumber commence par 'y' : xxx


1 commentaires

Le demandeur veut changer y-1001 sur p-1001 , pas l'autre tour :)



0
votes

Veuillez utiliser ci-dessous Query:

update Invoice_test set docnumber = 'P'||SUBSTR(DOCNUMBER, 2) where SUBSTR(DOCNUMBER, 1,1) = 'Y';


0 commentaires

1
votes

Ceci est un simple remplacement de y à p dans la colonne. Donc une mise à jour simple avec la fonction remplacer résoudra le problème. XXX

Bien sûr, cela suppose que le reste de la chaîne ne peut pas contenir de P . Si cela peut, alors une expression régulière basée sur la fonction fonctionnera à l'aide de la fonction regexp_replace qui ne remplacera que le début y . xxx

La requête suivante montre que regexp_replace ne remplace que le début y xxx

ceci est le résultat: xxx


0 commentaires