Problème d'utilisation de REPLACE

Problème d'utilisation de REPLACE - SQL/NoSQL - Programmation

Marsh Posté le 27-10-2009 à 11:37:27    

Bonjour, je dois changer des codes dans ma base de données Oracle :
Je dois extraire les codes commençant par 02 et ayant une longueur de 4 et 6 caractères de la collectivité 59350,  
Une fois extrait je dois remplacer le 02 du début par 3 lettres, ici LVB. Le problème et qu'avec cette requête si par exemple un code à 4 caractère est '0202',
la requête va transformer en 'LVBLVB' or je veux que ce soit 'LVB02'.
La requête fonctionne pour les codes du type 02XX ou 02XXXX, X étant différent de '02' et compris entre 2 ou 4 caractères.
 
SELECT REPLACE (or.CODE, '02', 'LVB')
FROM ORGANIGRAMME or
WHERE or.COL = '59350'
AND SubStr(or.CODE, 1, 2) = '02'
AND (or.LGCODE = '4' OR or.LGCODE = '6')  
 
J'ai essayé dans la première ligne de mettre SELECT REPLACE (or.CODE, '02%', 'LVB') le pourcentage ici n'est pas pris comme dans l'expression LIKE. Donc voila je suis bien bloqué. Merci de votre aide.

Reply

Marsh Posté le 27-10-2009 à 11:37:27   

Reply

Marsh Posté le 27-10-2009 à 11:44:25    

Code :
  1. SELECT 'LVB' || substr(OR.CODE,3,4000)
  2. FROM ORGANIGRAMME OR
  3. WHERE OR.COL = '59350'
  4. AND SubStr(OR.CODE, 1, 2) = '02'
  5. AND (OR.LGCODE = '4' OR OR.LGCODE = '6')


 
ps: perso j'éviterai d'appeler un alias OR

Reply

Marsh Posté le 27-10-2009 à 11:48:51    

Salut,
 
J'ai un exemple qui permet de faire ce que tu voudrais, ici je remplace le premier caractère d'un code postal par un autre sans utiliser de REPLACE :
SELECT ad.adr_cod_pos, '6' || substr(ad.adr_cod_pos, 2, length(ad.adr_cod_pos) - 1)
FROM adresse AD
WHERE AD.Adr_Cod_Pos LIKE '5%'
 
Si tu veux adapter, je pense qu'en faisant
 
SELECT or.CODE, 'LVB' || substr(or.CODE, 3, length(or.CODE) - 2)
FROM ORGANIGRAMME or
WHERE or.COL = '59350'
AND SubStr(or.CODE, 1, 2) = '02'
AND (or.LGCODE = '4' OR or.LGCODE = '6')  
 
Bon courage,

Reply

Marsh Posté le 27-10-2009 à 13:32:00    

Merci beaucoup à vous deux :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed