Announcement

Collapse
No announcement yet.

Vorkommen eines Zeichen in einem String

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vorkommen eines Zeichen in einem String

    Hi,

    ich würde gerne wissen wie ich herausfinden kann wieviel mal ein Leerzeichen in einem Text vorkommt.
    z.B. "Hallo wie gehts" ,also ich suche nach einer Möglichkeit mir als Ergebnis die 2 ausgibt weil 2 Leerzeichen vorhanden sind.

    Bitte um Hilfe.
    Zuletzt editiert von acer87; 20.04.2010, 20:25.

  • #2
    Hallo,

    für so etwas wären Regex ein Mittel: http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck (\s)
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Vielen Dank für die Antwort,jedoch bin sozusagen noch Amateur in diesem Gebiet deswegen wäre schon ein Code viel besser für mich.
      Ich habe mir sowas vorgestellt select function_name('Hallo wie gehts',' ') from dual;

      und dann krieg ich als Ergebnis die Anzahl an Leerzeichen zurück.


      Ne Idee?
      Zuletzt editiert von acer87; 20.04.2010, 21:15.

      Comment


      • #4
        Es gibt keine eingebaute Funktion die das macht. Am einfachsten geht es, wenn Du Dir die selbst baust.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Danke für die Antwort ,

          ich habe den besagten code etwas umgeschrieben
          ,jedoch wenn ich einen insert (insert into Translate(Text) values('Hallo wie ')
          mache kommt folgender Fehler "Maximale Anzahl rekursiver SQL-Ebenen (50) überschritten"

          Code:
          CREATE OR REPLACE TRIGGER tri_satzpruef
          BEFORE INSERT ON TRANSLATE
          FOR EACH ROW
          
          DECLARE
          Satz_zu_kurz EXCEPTION;
          v_Zaehler NUMBER;
          v_index NUMBER;
          v_Satz VARCHAR2(2000);
          v_Char VARCHAR2(2000);
          
          BEGIN
          v_Zaehler := 0;
          v_index := 1;
          v_Satz := LOWER(:NEW.Text);
          v_Char :=' ';
          FOR I IN 1 .. LENGTH(v_Satz) LOOP
          IF (LENGTH(v_Char) <= LENGTH(v_Satz)-v_index+1)
          AND (SUBSTR(v_Satz,v_index,LENGTH(v_Char)) = v_Char) THEN
          v_Zaehler := v_Zaehler+1;
          END IF;
          v_index := v_index+1;
          END LOOP;
          
          
          IF v_Zaehler < 2 THEN
          RAISE Satz_zu_kurz;
          ELSE
          INSERT INTO TRANSLATE(Text) VALUES(:NEW.Text);
          COMMIT;
          END IF;
          
          EXCEPTION
          
          WHEN Satz_zu_kurz THEN 
          RAISE_APPLICATION_ERROR(-20000,'Satz zu kurz');
          
          END;
          /
          Bitte um Hilfe

          Comment


          • #6
            select length('ab c d e ')-length(replace('ab c d e ',' ')) from dual;

            Gruß

            Ralf

            Comment


            • #7
              Originally posted by ralfb View Post
              select length('ab c d e ')-length(replace('ab c d e ',' ')) from dual;

              Gruß

              Ralf
              Cool :-) .

              Comment

              Working...
              X