Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Stringattribut zerlegen

Dieses Thema im Forum "SQLite" wurde erstellt von Ludwigmller, 8 August 2021.

  1. Ludwigmller

    Ludwigmller Fleissiger Benutzer

    Ich habe eine fremde sqlite - DB, die von einer Android-App erzeugt wurde. Leider gibt es dort eine Spalte, in der mehrere Werte nur durch ein Semikolon getrennt werden, statt in einer seperaten Spalte zu stehen. Z. B.:
    Code:
    false;true;false;0.0;0.0;;false
    
    Wie kann ich mit einem SELECT diesen Inhalt der Spalte in die einzelnen Werte zerlegen, sodass ich damit weitere Abfagen machen kann?
     
  2. dabadepdu

    dabadepdu Datenbank-Guru

    Du könntest dem String in ein Array transformieren und weiter verarbeiten. Es gibt auch andere Möglichkeiten. Kern des Problems ist dabei, wie verlässlich (konstant und sauber) die Werte in der Spalte angegeben sind.
    Ist der Inhalt unsauber, führt die Verarbeitung leicht zu Fehlern.
    Code:
    Select
      da.DataArray[1]::bool as val1,
      da.DataArray[2]::bool as val2,
      da.DataArray[3]::bool as val3,
      da.DataArray[4]::float as val4,
      da.DataArray[5]::float as val5,
      da.DataArray[6]::text as val6,
      da.DataArray[7]::bool as val7 from
    (select string_to_array('false ;true;false;  0.1 ; 10.3333;;false',';') as DataArray) da
    
     
    Ludwigmller gefällt das.
  3. Ludwigmller

    Ludwigmller Fleissiger Benutzer

    Bekomme da den Fehler "unrecognized token " :" (Code 1 SQLITE_ERROR)"...
     
  4. castorp

    castorp Datenbank-Guru

    Ich glaube Du verwechselst SQLite und Postgres. SQLite hat keine Arrays und auch kein string_to_array()
     
    akretschmer gefällt das.
  5. akretschmer

    akretschmer Datenbank-Guru

    gut, daß ich das diesmal nicht war ...
     
  6. dabadepdu

    dabadepdu Datenbank-Guru

    Oh, nein, 'tschuldigung, ich verwechsel die nicht. Ich bin aus unbekannten Gründen davon ausgegangen, die Datenquelle stammt aus SQLite und die DB wäre nun Postgres.
    Ich habe hier einen Ansatz für SQLite gemacht, der allerdings die Einzelwerte als rows ausgibt:
    SQLite 3.27 | db<>fiddle
    Jenachdem, was man braucht, muss man noch transformieren z.b. mit Case When.
     
    Ludwigmller gefällt das.
  7. Dukel

    Dukel Datenbank-Guru

    Evtl. kann man das auch in der Applikation weiter verarbeiten, wenn die DB das nicht kann.
     
  8. Ludwigmller

    Ludwigmller Fleissiger Benutzer

    @Dukel da die App nicht von mir stammt, müsste ich halt nur dafür eine programmieren... aber wäre wohl einfacher mit Java als mit der (für mich) sehr kompliziereten Abfrage von @dabadepdu

    SQlite unterstützt keine user defined funtions, richtig? Sonst hätte ich gerne eine Funktion gehabt, der man einen int Parameter übergibt, und dann den Teil vor dem x. Semikolon zurück gegeben bekommt.
    Gibt es keine Funktion mit der ich z.B. das 4. und 5. Semikolon finden kann und dann mit einer anderen Funktion den Teil dazwischen ?
     
    Zuletzt bearbeitet: 19 August 2021
Die Seite wird geladen...
Ähnliche Themen - Stringattribut zerlegen
  1. weini79
    Antworten:
    1
    Aufrufe:
    1.665

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden