Pl/Sql mit instr genaue übereinstimmung zu finden

Ich versuche, herauszufinden, ob ein string existiert in Wort und entpacken Sie es. Ich habe verwendet die instr() Funktion aber diese funktioniert wie der LIKE-Funktion: wenn ein Teil oder das ganze Wort existiert, gibt es zurück.

Hier ich will den string 'Dienstleistungen' aus, es funktioniert, aber wenn ich 'Dienstleistungen' zu 'Service' es funktioniert immer noch. Ich möchte das nicht. Wenn 'Service' eingetragen ist, sollte es null zurückgeben, und nicht 'Dienste'

Geändert:

Was ich versuche zu tun, ist hier abzukürzen, bestimmte Teile des Firmennamens.

Dies ist, was meine Datenbank-Tabelle sieht wie folgt aus :

Word     | Abb
---------+-----  
Company  | com
Limited  | ltd
Service  | serv
Services | servs

Hier ist der code:

Declare 

    Cursor Words Is

    SELECT word,abb
    FROM abbWords


    processingWord VARCHAR2(50);
    abbreviatedName VARCHAR(120);
    fullName = 'A.D Company Services Limited';

BEGIN

    FOR eachWord IN Words LOOP


      --find the position of the word in name
       wordPosition := INSTR(fullName, eachWord.word);

       --extracts the word form the full name that matches the database
       processingWord := Substr(fullName,instr(fullName,eachWord.word), length(eachWord.word));

      --only process words that exist in name
      if wordPosition > 0 then
           abbreviatedName = replace(fullName, eachWord.word,eachWord.abb);
       end if;

    END lOOP;

END;

So, wenn der Benutzer 'Service' ich will nicht 'Dienste' zurückgegeben werden. Damit meine ich word-position sollte 0 sein, wenn das Wort 'Service' in nicht gefunden werden, anstatt die position, für die das Wort 'Dienste'

InformationsquelleAutor devdar | 2012-09-04
Schreibe einen Kommentar