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

Textteile selectieren

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von IchHH, 26 Juni 2017.

  1. IchHH

    IchHH Datenbank-Guru

    Hallo, wie kann ich nur Teile einer Zelle abschneiden und in einer anderen Spalte kopieren?

    Hört sich ein wenig komisch an. Hier aber zur Verdeutlichung:

    1. Ich möchte alle Zeichen in einer straße die nach c/o (wenn existent) kommen aber inkl. den c/o in einer zweiten Spalte anzeigen lassen, die erste Spalte soll dann den Wert nicht mehr anzeigen

    2. Ich möchte gerne dann alle Zeichen nach der ersten Zahl in einer anderen Spalte angezeigt bekommen.

    Mit left oder right kann man nicht arbeiten, bin mir aber auch nicht wirklich sicher.
     
  2. ukulele

    ukulele Datenbank-Guru

    patindex() ist dein Freund:
    Code:
    SELECT   rtrim(left(spalte,len(spalte)-patindex('%c/o%',spalte))) AS davor,
         right(spalte,patindex('%c/o%',spalte)) AS danach
    FROM tabelle
     
  3. IchHH

    IchHH Datenbank-Guru

    Das funktioniert nur bedingt. Nur bei 2 von 16 Datensätzen hat das geklappt. Das gilt sowohl bei "davor" als auch bei "danach". Woran könnte das liegen?
     
  4. ukulele

    ukulele Datenbank-Guru

    Eine andere Schreibweise von c/o
     
  5. IchHH

    IchHH Datenbank-Guru

    Interessanterweise ist das nicht der Fall. Es gibt auch kein Muster was ich erkennen kann. Manchmal schneidet er den Text mitten im Straßennamen ab, manchmal nach einem Punkt oder Komma. Das sieht dann so aus

    danach
    t Str. 64 c/o Jahr
    r. 37 c/o Schloss
    einw.1A c/o Baum

    usw.
     
  6. ukulele

    ukulele Datenbank-Guru

    Ja mein Fehler, zu früh, zu wenig Tests:
    Code:
    SELECT   patindex('%c/o%',spalte),
         (CASE WHEN spalte LIKE '%c/o%' THEN left(spalte,patindex('%c/o%',spalte)-1) ELSE spalte END) AS davor,
         (CASE WHEN spalte LIKE '%c/o%' THEN right(spalte,len(spalte)-patindex('%c/o%',spalte)+1) ELSE NULL END) AS danach
    FROM   tabelle
     
  7. IchHH

    IchHH Datenbank-Guru

    Perfekt, genauso meinte ich das. Den Code verstehe ich zum Glück auch noch.
     
  8. ukulele

    ukulele Datenbank-Guru

    Du könntest auch die CASE-Bedingung weg lassen wenn du z.B. im WHERE-Teil sagst das nur Spalten mit c/o selektiert werden. Leider muss man das irgendwie prüfen sonst bekommt er in Spalte "davor" eine -1 als Längen-Paramter.
     
Die Seite wird geladen...
Ähnliche Themen - Textteile selectieren
  1. IchHH
    Antworten:
    4
    Aufrufe:
    965

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