J'ai une table Oracle qui contient des données comme 'Shiv------Shukla'
(considérer '-'
comme espace).
Maintenant j'ai besoin d'écrire un programme qui ne laisse qu'un seul espace et supprime tous les autres espaces.Comment faire pour supprimer plus d'un espace dans Oracle
Voici le programme que j'ai réalisé mais il ne me donne pas le résultat attendu.
DECLARE
MAX_LIMIT VARCHAR2(50):=NULL;
REQ VARCHAR2(20):=NULL;
CURSOR C1 IS
SELECT *
FROM ASSET_Y;
BEGIN
FOR REC IN C1
LOOP
MAX_LIMIT:=LENGTH(REC.NAME)-LENGTH(REPLACE(REC.NAME,'-'));
FOR I IN 1..MAX_LIMIT
LOOP
UPDATE ASSET_Y
SET NAME=REPLACE(REC.NAME,'--','-')
WHERE REC.SNO=ASSET_Y.SNO;
COMMIT;
SELECT ASSET_Y.NAME INTO REQ FROM ASSET_Y WHERE ASSET_Y.SNO=REC.SNO;
DBMS_OUTPUT.PUT_LINE(REQ);
END LOOP;
END LOOP;
COMMIT;
END;
/
Ma table est
SQL> select * from asset_y;
SNO NAME FL
---------- -------------------- --
1 Shiv------Shukla y
2 Jinesh y
après l'exécution de la procédure i m obtenir la sortie suivante.
Shiv---Shukla
Shiv---Shukla
Shiv---Shukla
Shiv---Shukla
Shiv---Shukla
Shiv---Shukla
PL/SQL procedure successfully completed.
Oracle fournit un exemple de la façon de supprimer les espaces en double ici: https://docs.oracle.com/cd/B19306_01/server.102/ b14200/functions130.htm. 'regexp_replace (your_string, '() {2,}', '');' – zundarz