Announcement

Collapse
No announcement yet.

suchen und ersetzen

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

  • suchen und ersetzen

    Hallo Leute,

    wollte eine suchen und erstzen Function im SQL 2005 schreiben.
    Arbeit aber falsch. Macht bei dem Beispiel 3 Durchläufe und hängt plötzlich den Text wieder dran.

    Vielleicht hat jemand ja eine Idee oder kennt eine bessere Lösung.

    Danke schon mal

    Der Benutzer: und Name muß weg. Die kann öfters vorkommen mit unterschiedlichen Namen. Ich suche daher Benutzer: und am: um 2 Strings zu bilden die ich dann wieder zusammenfüge.

    declare @cText2 nvarchar(255)
    declare @cText3 nvarchar(max)
    declare @cText4 nvarchar(max)
    declare @cText5 nvarchar(max)
    declare @nZahl int

    Set @cText2 = 'Das ist ein Benutzer: Harald am: 12.03.2008 heute kommt noch Text vom Benutzer: Robert am: 13.03.2008'
    while PATINDEX('%Benutzer:%',@cText2) >0
    Begin
    Print PATINDEX('%Benutzer:%',@cText2)
    Print PATINDEX('%am:%',@cText2)
    set @nZahl = len(@cText2)
    Print @nZahl
    Print @cText2
    --@cText3 = ''
    --@cText4 = ''
    Set @cText3 = Substring(@cText2,1,PATINDEX('%Benutzer:%',@cText2 )-2)
    Print @cText3
    Set @cText4 = Substring(@cText2,PATINDEX('%am:%',@cText2), @nZahl)
    --Print @cText3
    Print @cText4
    Set @cText2 = @cText3 + @cText4
    --Print @cText2
    End

  • #2
    Was soll den nun konkret das (richtige) Ergebnis sein?
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Originally posted by O. Helper View Post
      Was soll den nun konkret das (richtige) Ergebnis sein?
      Hallo
      es soll das Wort Benutzer: und Name jeweils aus dem Text entfernt werden, wegen dem Datenschutz.

      Danke

      Gruß Schwedesky

      Comment


      • #4
        So haut es hin:

        [highlight=SQL]DECLARE @cText2 nvarchar(255)
        DECLARE @PosBen int
        DECLARE @PosAm int

        SET @cText2 = 'Das ist ein Benutzer: Harald am: 12.03.2008 heute kommt noch Text vom Benutzer: Robert am: 13.03.2008'
        WHILE PATINDEX('%Benutzer:%', @cText2) > 0
        Begin
        SET @PosBen = PATINDEX('%Benutzer:%',@cText2) - 1
        SET @PosAm = PATINDEX('%am:%',@cText2)
        SET @cText2 = LEFT(@cText2, @PosBen) + SUBSTRING(@cText2, @PosAm + 4, LEN(@cText2) - @PosAm)
        End
        PRINT @cText2[/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Danke Olaf,

          der Code geht.

          Habe dann gemeint , das am: auch stehen bleibt. Lösche die + 4 weg und siehe da das gleiche iwe mit meinem Code. Alles 3 fach.

          Dein Code ist natürlich kürzer und ich verzichte auf "am:2

          Danke

          Gruß Harry

          Comment

          Working...
          X