Announcement

Collapse
No announcement yet.

SQL Ausführen > UPDATE

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

  • SQL Ausführen > UPDATE

    Hallo zusammen,

    ich habe überhaupt keine Ahnung von SQL muss allerdings eine Änderung an einer Datenbank vornehmen.
    Dazu benutze ich folgenden Code:

    UPDATE TABELLE1 SET TESTSPALTE = 'Test1(null)Test3(null)Test3(null)'

    Allerdings möchte ich, dass in der Zelle die Werte untereinander (Line Break) stehen, also:

    Test1
    Test2
    Test3

    Ich habe es so probiert, funktioniert aber nicht:

    UPDATE TABELLE1 SET TESTSPALTE = 'Test1(null)/nTest3(null)/nTest3(null)'


    Habt ihr evtl. einen Tipp für mich? :-)


    Vielen Dank
    Chris

  • #2
    Und warum fügst du dann keinen Zeilenumbruch ein, sondern (null)?
    \n ist Unix und wird \n geschrieben nicht /n
    https://de.wikipedia.org/wiki/Zeilenumbruch

    Des Weiteren wird das nur in Bezug auf das jeweilige Anzeigetool funktionieren
    Christian

    Comment


    • #3
      Folgendes:

      Wenn ich die Datenbank mit "DB Browser for SQLite" öffne und dort in die Spalte "TESTSPALTE" gehe,
      steht dort "Test1(null)Test3(null)Test3(null)".

      Wenn ich eine Zelle kopiere und in den Texteditor einfüge, erhalte ich

      Test1(null)
      Test3(null)
      Test3(null)

      und nicht Test1(null)Test3(null)Test3(null)

      Ich würde gerne neu Inhalte in die Zelle eingeben, allerdings bekomme ich das mit dem "Return" oder "Linebreak" oder "\n" nicht hin.
      Wie muss ich da vorgehen ?

      Ich würde dazu gerne diese Funktion nutzen:


      UPDATE TABELLE1 SET TESTSPALTE = '...'

      UPDATE TABELLE1 SET TESTSPALTE = 'ZEILE1(null)Zeile2(null)Zeile3(null)'

      Wenn ich dieses später in einen Texteditor kopiere soll es untereinander stehen:

      Zeile1(null)
      Zeile2(null)
      Zeile3(null)

      Ich habe leider überhaupt keine Ahnung von SQL

      Es wäre toll, wenn mir jemand die Formel anpassen könnte


      Vielen Dank

      Chris

      Comment


      • #4
        Siehe Beitrag #2 auf den du überhaupt nicht eingangen bist. Das ist kein Problem von SQL sondern von
        - was ist ein Zeilenumbruch
        - wo will ich diesen anzeigen
        Üblicherweise ist das kein Problem einer Datenbank, sondern "wie zeige ich Inhalte einer Datenbank an"

        Man speichert auch nicht "viele" Werte in einem Datenbankfeld, sondern man entwirft eine Untertabelle die zu jedem Mastereintrag die Einzelwerte enthält und kann diese in unterschiedlicher Form anzeigen


        allerdings bekomme ich das mit dem "Return" oder "Linebreak" oder "\n" nicht hin.
        Nicht hin ist kein Fehler.
        Natürlich hast die die im Link angezeigten anderen Zeilenumbrüche auch ausprobiert.
        Wie du das anzeigst ist auch ein Geheimnis
        Ich habe schon darauf hingewiesen, dass das dem Anzeigetool geschuldet ist.
        Christian

        Comment


        • #5
          Originally posted by chris234 View Post
          Wenn ich dieses später in einen Texteditor kopiere soll es untereinander stehen:
          Und dafür müssen wir/du wissen welchen Kodierung dein TextEditor als Zeilenumbruch erwartet.
          Wenn der den du benutzt hast \n nicht als Zeilenumbruch frisst versteht er vielleicht \r\n. Das wäre der Standard unter Windows. Zum Beispiel Notepad würde auf \n nicht reagieren.

          Du solltest auch nicht unbedingt erwarten das dein "DB Browser for SQLite" das Ergebnis unverändert gelassen hat damit du es einfach per Copy&Paste da original getreu rauskopieren kannst. Sollte das eine Grid Darstellung sein ist es üblich das solche Tools bestimmte Dinge aus der Zelle rausparsen (nicht nur Zeilenumbrüche sondern auch z.B. Tabs o.ä) damit es vernünftig in einem Grid darstellbar wird.


          Comment


          • #6
            Vielen Dank, für eue bisherige Hilfe,

            ich würde die Datenbank gerne per .bat file änder und nutze dazu sqlite3.exe
            Leider wird auch "\r\n" in der Datenbank nicht als Linebreak erkannt. In der Datenbank steht "ZEILE1(null)\r\nZEILE2(null)\r\nZEILE3|(null)|(nu ll)" :-(


            sqlite3.exe meinetabelle.sqlite "UPDATE TABELLE1 SET TESTSPALTE = 'ZEILE1(null)\r\nZEILE2(null)\r\nZEILE3|(null)|(nu ll)';"

            Noch jemand eine Idee ?

            Gruß
            Chris
            Zuletzt editiert von chris234; 27.02.2019, 10:57.

            Comment


            • #7
              Das Problem wird sein das du 2 bzw.4 Bytes schreibst. Ein Byte \, ein Byte r, ein Byte \ ein Byte n.
              Ein Zeilenumbruch ist aber 1 bzw. 2 Bytes.
              Der \ ist ein Entwertungszeichen. Du musst in deiner BAT
              sqlite3.exe meinetabelle.sqlite "UPDATE TABELLE1 SET TESTSPALTE = 'ZEILE1(null)chr(13)chr(10)ZEILE2(null)chr(13)chr( 10)ZEILE3|(null)|(nu ll)';"
              schreiben. Ob und wie das geht weiß ich nicht
              Christian

              Comment


              • #8
                so

                PHP Code:
                  ..set testspalte 'Zeile1(null)' || x'0a' ||'zeile2'... 
                oder
                PHP Code:
                  ..set testspalte 'Zeile1(null)' || char(10) ||'zeile2'... 
                wobei der konkrete Wert, der im Anzeigeprgramm den Umbruch bewirkt, wie von Christian beschrieben nichts mit sqlite zu tun hat.

                Comment

                Working...
                X