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

Text bis zu Zeichen X ausgeben, danach abschneiden

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von funkyice, 14 August 2013.

  1. funkyice

    funkyice Benutzer

    Hallo zusammen,

    bin in unserem Unternehmen neben Marketing-Aktivitäten auch für den Bereich IT verantwortlich und muss mich mit SQL-Abfragen für diverse Auswertungen kümmern. Mit Basisgrundwissen und Google bin ich bislang schon weit gekommen, doch jetzt finde ich weder eine Lösung, noch komme ich selbst darauf.

    Ausgangslage ist ein Textfeld, in dem folgendes stehen kann:
    • 517 € Umsatz
    • 218,- € Umsatz
    • 1.120 €

    Ich brauche eine Abfrage, die mir nur die Zahlenwerte ausgibt und den Rest außen vorlässt.
    Ich hatte es zunächst mit LEFT(...) versucht, aber auch das brachte mich nicht weiter, weil die Anzahl der Zeichen variabel ist. Auch die Länge zu Messen funktioniert nicht, weil ich nicht weiß, wie man die Zeichen bis zu einem bestimmten Wert zählen kann.

    Bin für Tipps und Hinweise dankbar!
    Sebastian
     
  2. akretschmer

    akretschmer Datenbank-Guru

    In PG:

    Code:
    test=*# select regexp_replace('- 1.120 €','[^0-9.]','','g');
     regexp_replace
    ----------------
     1.120
    (1 row)
    
    sicherlich hat der M$SQL was ähnliches. Davon abgesehen: verwende passende Datentypen, dann stellen sich solche und ähnliche Probleme gar nicht erst.
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich meine mich zu erinnern das MSSQL replace() nicht mit Pattern (also [0-9] etc.) umgehen kann. Man müsste also mit mehreren replace() arbeiten und vor allem muss man sich im klaren darüber sein was alles vorkommen kann und schön gegenprüfen.
    Code:
    SELECT    replace(replace(replace(replace(replace(replace('- 1.120,- € Umsatz','- ',''),',',''),'.',''),'€',''),' ',''),'Umsatz','');
     
    SELECT    *
    FROM    tabelle
    WHERE    isnumeric(replace(replace(replace(replace(replace(replace(spalte,'- ',''),',',''),'.',''),'€',''),' ',''),'Umsatz','');) = 0
    
     
  4. funkyice

    funkyice Benutzer

    Und nur um das klarzustellen, die vorangehenden "-" waren nur Aufzählungsstriche... ;-)
    Ansonsten gibt es keine elegantere Lösung? Bei den ganzen "replace" und "()" wird einem schwindelig!
     
  5. ukulele

    ukulele Datenbank-Guru

    Mir ist leider keine bekannt.
     
  6. Benutzer0000

    Benutzer0000 Benutzer

    In Sql fällt mir derzeit keine lösung ein (jedenfalls eine elegante, die funktioniert), aber ich könnte dir eine kleine Brücke anbieten. Ich könnte dir einen einfachen VB Code schreiben, der dir diese Zeichen entfernt, somit du die Zahlen alleine in der Tabelle stehen hast

    MFG
     
  7. funkyice

    funkyice Benutzer

    Danke, ich werde erstmal mit REPLACE arbeiten. Danke! :)
     
Die Seite wird geladen...

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