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

Nach genau 3 Punkten suchen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von xlumia, 25 April 2017.

  1. xlumia

    xlumia Benutzer

    Ich möchte mit meinem SQL Statement alle Datensätze mit genau 3 Punkte suchen.

    select ID, NAME, TEL
    from PERSONS where TEL like '%.%.%.%';

    Damit funktionierts leider nicht. Kann mit jemand weiter helfen?
     
  2. lothar

    lothar Benutzer

    Was kriegst du für eine Fehlermeldung? Normalerweise müsste es klappen.
     
  3. xlumia

    xlumia Benutzer

    So klappt das Statement auch, aber es ist nicht die Lösung die ich haben will.
    Ich möchte nur die Datensätze anzeigen, die genau 3 Punkte in der Spalte TEL haben. So bekomme ich auch die Datensätze, die mehr als 3 Punkte haben.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Wie genau soll das sein, also exakt ein String bestehend aus 3 Punkten, ein String, der irgendwo 3 Punkte enthält, der 3 Punkte nacheinander enthält?

    Code:
    test=*# create table telefon as select s, 'eintrag mit ' || repeat('.',s) || ' Punkten' as data from generate_series(1, 10) s;
    SELECT 10
    test=*# select * from telefon where data ~ ' \.\.\. ';
     s |  data   
    ---+-------------------------
     3 | eintrag mit ... Punkten
    (1 Zeile)
    
    test=*#
    
     
  5. xlumia

    xlumia Benutzer

    TEL
    098.7927.92728.02828.02828
    098.028.08728.078
    02828.8288.1627.71718

    Nur die anzeigen, die auch 3 Punkte im Datensatz haben.
    Hoffe das ist jetzt verständlich?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from telefon;
     s |  data   
    ---+----------------------------
     1 | 098.7927.92728.02828.02828
     2 | 098.028.08728.078
     3 | 02828.8288.1627.71718
    (3 Zeilen)
    
    test=*# select * from telefon where length(data) - length(replace(data,'.','')) = 3;
     s |  data   
    ---+-----------------------
     2 | 098.028.08728.078
     3 | 02828.8288.1627.71718
    (2 Zeilen)
    
    test=*#
    
    PostgreSQL, könnte aber auch in MySQL gehen.
     
  7. xlumia

    xlumia Benutzer

    Danke!
    Ja hat geklappt :)
     
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