Announcement

Collapse
No announcement yet.

LIKE Abfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LIKE Abfragen

    Moin komm mit sql eigentlich gut klar, aber bei zwei Abfragen habe ich ein kleines Problem. Als DBMS nehm ich MySQL.





    Nachnamen und Orte aller Mieter mit einem z ab der 2. Stelle in ihrem Nachnamen

    bisher so versucht SELECT nachname, orte from mieter where nachname LIKE "_z%"..

    Mit dem Prozentzeichen stimmt wohl etwas nicht.

    und

    Nachnamen und Orte aller Mieter mit einem _ in ihrem Nachnamen

    Das Zeichen gibts in SQL ja auch. Muss danach aber irgendwie suchen...

    SELECT nachname, orte from mieter where nachname Like '_';

    geht somit net..

  • #2
    versuch mal
    ... LIKE '_' ESCAPE '_'

    Comment


    • #3
      Mit dem Prozentzeichen stimmt wohl etwas nicht.
      Was bitte schön soll das heissen?
      Grundsätzlich ist das so ok. Kommen falsche Ergebnisse heraus oder was genau?

      Wie Ebis schon schrieb, wenn man nach einem Wildcard als solches suchen will, muss an das gesondert angeben, das geht eben über die Anweisung ESCAPE (bei MS SQL Server, bei anderen DBMS kann es anders aussehen).

      Wobei es
      LIKE '%_%' ESCAPE '_'
      sein muss.
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Oder C-Like mit Backspace Escapen:

        like '%\_%'

        Comment


        • #5
          '_z%' findet eben auch z die an erster Stelle stehen. AB der 2. Stelle im Namen könnte man mit Regular Expressions nachbilden.
          So in etwa:

          Code:
          ^[^z]\w*[z]\w*
          Hab das Beispiel hier in Oracle ausprobiert, eventuell kann man das ja nach MySQL portieren:

          [highlight=sql]
          with mieter as
          (
          SELECT 'meier' as nachname FROM dual
          UNION ALL
          SELECT 'hzuber' as nachname FROM dual
          UNION ALL
          SELECT 'schmidtz' as nachname FROM dual
          UNION ALL
          SELECT 'zoeller' as nachname FROM dual
          )
          SELECT *
          FROM mieter
          WHERE REGEXP_LIKE(nachname,'^[^z]\w*[z]\w*')
          [/highlight]

          Ergebnis:

          Code:
          NACHNAME 
          -------- 
          hzuber   
          schmidtz 
          
          2 rows selected

          Comment

          Working...
          X