Ankündigung

Einklappen
Keine Ankündigung bisher.

sql like

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sql like

    Hi,

    Ich habe eine Tabelle "text".
    1. Datensatz: Ei
    2. Datensatz: Ei mit Speck
    3. Datensatz: Kartoffeln mit Ei und Salat
    4. Datensatz: Eigelb
    5. Datensatz: Meister

    Und nun möchte ich finden: alle datensätze wo ein einzelnes wort Ei vorkommt.
    also die ersten 3 Datensätze.

    Nur wie setzt man sowas um?

    PHP-Code:
    LIKE '%Ei%' //geht nicht
    LIKE '%Ei' //geht auch nicht
    LIKE 'Ei' //geht auch nicht
    LIKE 'Ei%'//geht auch nicht 
    Sucherg bei google liefert nur beispiele für eine suche in feldern wo immer nur 1 Wort steht. Niemals jedoch für die suche in einem Sazt geschweige denn von einem Text.

    Danke!


  • #2
    "% Ei %"

    Wenn du das auch auf Satzanfänge anwenden willst, solltest du mal nach "mysql regexp" suchen.
    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

    Kommentar


    • #3
      Hast du es mal mit einem regulären Ausdruck versucht? Vielleicht mach auch diese Abfrage Sinn:
      Code:
      $sql = "SELECT `col` FROM `table` WHERE `col` = 'Ei' OR `col` LIKE '% Ei' OR `col` LIKE 'Ei %' OR `col` LIKE '% Ei %'";
      Gruß
      http://hallophp.de

      Kommentar


      • #4
        -- gelöscht --

        Sorry, habe Deine Frage nicht richtig gelesen.

        Grüße
        Thomas

        Kommentar


        • #5
          so jetzt aber nochmal eine Lösung:

          Code:
          mysql> select * from texte;
          +-----------------------------+
          | satz                        |
          +-----------------------------+
          | Ei                          |
          | Ei mit Speck                |
          | Kartoffeln mit Ei und Salat |
          | Eigelb                      |
          | Meister                     |
          +-----------------------------+
          5 rows in set (0.00 sec)
          
          mysql>
          
          
          mysql> select * from texte where CONCAT(' ',satz,' ')  LIKE '% Ei %';
          +-----------------------------+
          | satz                        |
          +-----------------------------+
          | Ei                          |
          | Ei mit Speck                |
          | Kartoffeln mit Ei und Salat |
          +-----------------------------+
          3 rows in set (0.01 sec)
          Grüße
          Thomas

          Kommentar


          • #6
            Und Eiterpopel oder Reis findest du dann auch?! Es verstößt schon gegen die erste Normalform wenn du Daten nicht atomar ablegst, diese Daten aber atomar benötigst. "Ei mit Steck" beinhaltet bereits mehr als eine Information, ist also nicht mehr atomar.

            Entsprechend solltest du deine Datenbank normalisieren, alles andere holt das nur zur Laufzeit nach, was der Performance nicht gerade entspricht. Wenn ich nun nach einem Rezept mit Ei ohne Speck aber mit vier Gramm Mehl suche geht das ohne PHP vermutlich garnicht mehr. Und mit PHP machst du dir bei entsprechend vielen Datenbank-Einträgen dann den Server aus.

            Also mach es gleich richtig, auch wenns erstmal unangenehm ist und mehr Arbeit bedeutet!
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar

            Lädt...
            X