Announcement

Collapse
No announcement yet.

substr?

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

  • substr?

    Hallo,

    wie kann ich aus z.B. "EDV/12/08" die 12 via SQL rausfiltern?

    Danke,

    Can

  • #2
    [highlight="sql"]
    select substring ( <feld> from <Start> for <Anzahl>) from <Tabelle>;
    [/highlight]

    Comment


    • #3
      Hallo und Danke,

      leider ändert sich die Zahl zwischen den "/", so dass ich keine konstanten Positionen habe.
      Ich müsste mit der Stringlänge arbeiten und abziehen, also:

      von 5 bis (stringlänge-7) und sowas kriege ich nicht hin!?

      Comment


      • #4
        In diesem Fall würde ich mir eine UDF schreiben, welche mir den String zerlegt.

        Comment


        • #5
          Hallo Zusammen,
          einfacher ist es, wenn Du eine kleine Prozedur schreibst, mit der Du dann Dein Feld zerlegen kannst. Die kannst Du ja auch extern aufrufen..

          Gruß Ralf

          Comment


          • #6
            Hallo,

            was für eine Prozedur meinst du? In Java? Ich bin absoluter Firebird-anfänger und kämpfe mich durch diverse manuals durch.
            Über UDF habe auch gelesen, aber wie ich endgültig selber eins schreibe und in firebird "einbinde" weiß ich auch (noch) nicht. Als Admin-Tool verwende ich flamerobin.
            Grüße
            Can

            Comment


            • #7
              Eine UDF ist eine Standard-Funktion in einer Dll/so, welch in einer beliebigen Hochsprache ( c/c++, Delphi, ...) diese kann dann wie eine native Funktion in SQL verwendet werden.

              Comment


              • #8
                Hallo,
                genauso wie man mit einer beliebigen Hochsprache ( c/c++, Delphi, ...) eine UDF erstellen kann, dafür muss Du aber zusätzliche Kenntnise darin haben, kannst Du direkt in Firebird Trigger und Proceduren in der Datenbank integrieren. Dies geschieht einfach über Deinen Datenbankmanager oder über ein Tool (z.B. IBExpert) womit Du die Datenbank administrieren kannst.

                Gruß Ralf

                Comment


                • #9
                  Originally posted by RSchuetz View Post
                  Hallo,
                  genauso wie man mit einer beliebigen Hochsprache ( c/c++, Delphi, ...) eine UDF erstellen kann, dafür muss Du aber zusätzliche Kenntnise darin haben, kannst Du direkt in Firebird Trigger und Proceduren in der Datenbank integrieren. Dies geschieht einfach über Deinen Datenbankmanager oder über ein Tool (z.B. IBExpert) womit Du die Datenbank administrieren kannst.

                  Gruß Ralf
                  Bei seinem Problem hilft ihm das aber nur bedingt.

                  Comment


                  • #10
                    Originally posted by Markus Kinzler View Post
                    Bei seinem Problem hilft ihm das aber nur bedingt.
                    Was hilf ihm nur bedingt?
                    Das er eine Prozedur erstellen kann, die ihm ein entsprechen Rückgabewert gibt?

                    Damit kann er doch genau das herauslösen.

                    Gruß Ralf

                    Comment


                    • #11
                      Eine Prozedur gibt ihm eine Ergebnismenge zurück, zerlegt ihm aber keine Werte.

                      Comment


                      • #12
                        Hallo Can,

                        du kann z.B. die FreeAdhocUDF verwenden.
                        Da gibt es die Funktion F_WORDNUM() mit der du Wörter unter Angabe eines Trennzeichens aus einem String extrahieren kannst.

                        Code:
                        SELECT
                          T.BEZ,
                          F_LTRIM(F_WORDNUM(T.BEZ, 1, '/', 0)),
                          F_WORDNUM(T.BEZ, 2, '/', 0)
                        FROM
                          Test T

                        http://udf.adhoc-data.de/dokumentati...ng.html#suchen

                        alex

                        Comment

                        Working...
                        X