Supponiamo di dover cambiare tutti i campi codice di una tabella ove i codici finiscano con la stringa ABCDEFG oppure DEFG, sia in minuscolo che in maiuscolo. Una soluzione può essere la seguente:
update myTable set codice = regexp_replace( upper(codice), '(ABC)*DEFG$', '')dove si ricercano i record che finiscono con ABCDEFG oppure solo DEFG e si sostituisce l'occorenza trovata con una stringa vuota. Per riuscire a fare la sostituzione sia nel caso di maiuscole/minuscole, si noti come il codice viene comunque trasformato in maiuscolo (tramite upper) e come si confronti la stringa con una espressione regolare in maiuscolo.
where upper(codice) ~ '(ABC)*DEFG$'
Va notato che nel caso la stringa da sostituire sia presente più di una volta, come ade esempio DEFGDEFG, è necessario usare un quantificatore nell'espressione regolare, che quindi diventa:
update myTable set codice = regexp_replace( upper(codice), '(ABC)*(DEFG)+$', '')in questo caso viene sostituita ogni occorrenza (da una a più) della stringa DEFG.
where upper(codice) ~ '(ABC)*(DEFG)+$'
Ovviamente è bene eseguire questo update all'interno di una transazione.
Nessun commento:
Posta un commento