SQL Select: String spliten und ersetzen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Yanbel.

    SQL Select: String spliten und ersetzen

    Hallo zusammen,

    Ich bekomme eine Spalte im Format Text diese beinhaltet ein String wie folgt:

    0.000;0.000;0.464;1.687;2.910;4.091;5.314;6.495;7.676;8.814;9.995;11.092;12.230;13.327;14.423;15.478;16.532;17.586;18.599;19.611.....

    Es sind immer 4000 Messung getrennt durch Semikolon.

    Meine Frage wäre: Ist es möglich gleich im Select diesen String zu trennen und den Punkt ersetzen in ein Komma.

    Vielen lieben dank. Lg
    Klar geht das.

    Select Replace(Feld, 'foo', 'moo') From TabelleFoo

    docs.microsoft.com/de-de/sql/t…-sql?view=sql-server-2017
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Wenn du eine Liste von Double-Werten brauchst (wovon ich ausgehe):

    VB.NET-Quellcode

    1. Dim Messungen As List(Of Double) = StringAusSQL.Split(CChar(";")).ToList.Select(Function(n) CDbl(n)).ToList


    Ansonsten:

    VB.NET-Quellcode

    1. Dim Messungen As List(Of String) = StringAusSQL.Replace(".", ",").Split(CChar(";")).ToList.


    EDIT:
    Frage nicht richtig gelesen. Hier das SQL:

    SQL-Abfrage

    1. CREATE TABLE #Testdata
    2. (
    3. DataItem VARCHAR(MAX),
    4. String VARCHAR(MAX)
    5. )
    6. INSERT #Testdata SELECT '', '0.000;0.000;0.464;1.687;2.910;4.091;5.314;6.495;7.676;8.814;9.995;11.092;12.230;13.327;14.423;15.478;16.532;17.586;18.599;19.611'
    7. ;WITH #tmp(DataItem,String) AS
    8. (
    9. SELECT
    10. LEFT(String, CHARINDEX(';', String + ';') - 1),
    11. STUFF(String, 1, CHARINDEX(';', String + ';'), '')
    12. FROM #Testdata
    13. UNION all
    14. SELECT
    15. LEFT(String, CHARINDEX(';', String + ';') - 1),
    16. STUFF(String, 1, CHARINDEX(';', String + ';'), '')
    17. FROM #tmp
    18. WHERE
    19. String > ''
    20. )
    21. SELECT DataItem FROM #tmp
    22. DROP Table #Testdata


    Wenn du das aus deinem Programm abfeuerst und die Connection direkt nach der abfrage schließt kannst du dir den letzten Befehl sparen. Die Temporärtabelle #Testdata existiert nur innerhalb deiner Session und wird nach dem Schließen gelöscht.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yanbel“ ()