Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2004, 10h47   #1
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 56
Points : 18
Points : 18
Par défaut Comparateur de chaine en pl/sql

Bonjour,

je cherche une solution algorithmique ou un début de source afin de comparer deux chaine pour trouver le nombre caractère qui diffère.
exemples :
ch1=>AAA ch2=>BAAA soit 1 caractère diffèrent
ch1=>AAA ch2=>ABA soit 1 caractère diffèrent
ch1=>AAA ch2=>ABAB soit 2 caractères diffèrents

Avez-vous une idée ou un début de raisonnement pour m'aider dans cette galère, merci d'avance.[/b]
squalito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 10h55   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Il faut faire un truc dans le genre de :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DECLARE
  v_ch1 VARCHAR2(50);
  v_ch2 VARCHAR2(50);
  nb    NUMBER;
  i     NUMBER;
BEGIN
   Nb := 0;
   i  := 0;
   v_Ch1 := 'AABBC';
   v_ch2 := 'ABCDE';
   while i <= Length(v_Ch1)
   loop
     IF SubStr(v_Ch1, i, 1) <> SubStr(v_Ch2, i, 1) THEN
        nb := nb + 1;
     END IF;
     i := i + 1;
   end loop;  
   DBMS_OUTPUT.PUT_LINE('Entre les 2 chaines, il y a '||to_char(nb)||' caractères différents');
END;  
/
en gérant un peu mieux les cas où les 2 chaines n'ont pas la même longueur....
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 11h23   #3
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
La comparaison entre ABBBA et AA doit retourner quoi ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 11h32   #4
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 56
Points : 18
Points : 18
pour moi il n'a rajouté que 3 caractères qui diffèrent par AA
mais peut-être que se raisonnement est faux.

ma problématique est la suivante :
un utilisateur ne peux modifier le texte pricipale si il ne modifie au plus 15 caractères rapport au texte principale sachant qu'il peut rajouter un caractère en début,fin et milieu de mot.
squalito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 13h55   #5
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 29
Points : 32
Points : 32
Envoyer un message via MSN à SFAUVEL
Ta condition fonctionnelle est TOUTE pourrie

ca veut dire que je peux modifier

"BONJOUR" en "xBxOxNxJxOxUxRxxxxxx"
mais pas
"Rue verte" en "Rue de la marche des rois de Flandre"

Tout ce que tu peux faire, c'est pour chaque lettre de l'ancienne valeur voir si elle était là avant, et compter les nouvelles....
SFAUVEL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 14h00   #6
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 56
Points : 18
Points : 18
Citation:
Envoyé par SFAUVEL
Ta condition fonctionnelle est TOUTE pourrie

ca veut dire que je peux modifier

"BONJOUR" en "xBxOxNxJxOxUxRxxxxxx"
mais pas
"Rue verte" en "Rue de la marche des rois de Flandre"

Tout ce que tu peux faire, c'est pour chaque lettre de l'ancienne valeur voir si elle était là avant, et compter les nouvelles....
si ton premier cas j'aurais 12 caractères modifiés
et dans l'autre 32 caractères modifiés espace compris
squalito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 14h03   #7
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 56
Points : 18
Points : 18
quel serait alors la solution la plus adéquote pour compter les caractères modifiés d'une chaine par rapport à une autre
squalito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 14h12   #8
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Attention : Multi-posts interdits sur ce site !

Avant de chercher une requête qui fait le boulot, il faudrait définir un algorithme, et avant l'algorithme il faudrait des règles précises de mesure (et tu as l'air de ne pas savoir toi-même...) ; il sera toujours temps de l'implémenter après !
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 14h45   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par pgibone
Attention : Multi-posts interdits sur ce site !
Quel mutilpost ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 14h59   #10
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
Citation:
Envoyé par orafrance
Citation:
Envoyé par pgibone
Attention : Multi-posts interdits sur ce site !
Quel mutilpost ?
N'exagère pas je n'ai pas dis mutile-post, je ne suis pas violent

Sinon dans le forum algorithme, il y a le même post !
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2004, 15h10   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
bon, ça va va c'est pas génant, c'est aussi de l'algo
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2004, 00h03   #12
Nouveau Membre du Club
 
Inscription : novembre 2004
Messages : 29
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 29
Points : 32
Points : 32
Envoyer un message via MSN à SFAUVEL
Bah....

Pour toute POSITION de 0 à longeurNouvelleChaine-1
si NouvelleChaine[ POSITION ] n'existe pas dans AncienneChaine alors
NbLettresNouvelles := NbLettresNouvelles + 1
fin pour toute

si NbLettresNouvelles > 15 alors
CA VA PAS

question à 100 balles : si avant il y avait 2 A et que j'en ajoute 1, est ce une nouveauté ? Dans ce cas mon algo simpliste est super faux 8)

Mais je ne comprend surtout pas le besoin fonctionnel auquel que tu cherches à répondre. On devrait pouvoir faire mieux que cette drole de fonction foireuse que nous cherchons à écrire....
SFAUVEL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2004, 09h49   #13
Futur Membre du Club
 
Inscription : décembre 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 56
Points : 18
Points : 18
Apparement je dois appliqué l'algorithme de Levenshtein Distance
http://www.merriampark.com/ld.htm#ALGORITHM
squalito est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h54.


 
 
 
 
Partenaires

Hébergement Web