Where Like IN (...) ??

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

  • Where Like IN (...) ??

    Hallo,

    ich suche nach einer Möglichkeit aus einer MYSQL Tabelle alle Datensätze auszugeben wo z.b. das Feld ZAHL mit 1, 2 oder 3 anfängt.
    Wenn das Feld = der Zahlen sein soll, würde das ja so aussehen:

    PHP-Code:
    SELECT FROM table WHERE zahl IN (1,2,3
    Ich bräuchte praktisch sowas in der Art:

    PHP-Code:
    SELECT FROM table WHERE zahl LIKE IN ("1%","2%","3%"
    Hat da jemand eine Funktion/Idee für mich?

  • #2
    Re: Where Like IN (...) ??

    WHERE funktionzumermittelndeserstenzeichensineinemstringdiedudirjetztimmysqlmanualmalsuchengehst(spalte) IN ('1', '2', '3')


    (Alternativ mehrere Like-Vergleiche mit ODER verknuepfen.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Sorry, war evtl. etwas ungenau.
      Die Zeichenlänge der Zahl ist später variabel und die Anzahl der Zahlen ist auch varibel, also es könnte auch so aussehen:
      12, 56, 2, 4678, 3, 95230

      Kommentar


      • #4
        Man gehe zum Manual und suche nach REGEXP

        Kommentar


        • #5
          SELECT ... WHERE CAST(zahl AS CHAR(1)) IN (1,2,3)

          Kommentar


          • #6
            Das Feld heißt Zahl, beinhaltet in den ersten Zeichen Ziffern, ist aber kein Zahlentyp... Das erscheint mir doch etwas verkorkst.

            Kommentar


            • #7
              Original geschrieben von onemorenerd
              SELECT ... WHERE CAST(zahl AS CHAR(1)) IN (1,2,3)
              Das ist schon mal gut, nur wie gesagt, wenn dort 122, 34, 4 funktioniert das nicht mehr, da ja CHAR(1) den Wert aus der Datenbank auf eine Ziffer kürzt. Manchmal müsste es aber auf zwei, drei oder mehr Ziffern kürzen.

              @jmc, bei REGEXP habe ich leider nichts gefunden, wo mehrere mögliche Werte bearbeiten werden sondern immer nur einer...!?

              @PHP-Desaster, hä? Das Feld kann auch Peterpan heißen, das ist nur ein Beispiel.

              Kommentar


              • #8
                Original geschrieben von manuelone
                Das ist schon mal gut, nur wie gesagt, wenn dort 122, 34, 4 funktioniert das nicht mehr, da ja CHAR(1) den Wert aus der Datenbank auf eine Ziffer kürzt. Manchmal müsste es aber auf zwei, drei oder mehr Ziffern kürzen.
                Was denn nun? Anfangs wolltest du:

                Original geschrieben von manuelone
                Hallo,

                ich suche nach einer Möglichkeit aus einer MYSQL Tabelle alle Datensätze auszugeben wo z.b. das Feld ZAHL mit 1, 2 oder 3 anfängt.
                Und nun?

                Kommentar


                • #9
                  Original geschrieben von manuelone
                  Sorry, war evtl. etwas ungenau.
                  Die Zeichenlänge der Zahl ist später variabel und die Anzahl der Zahlen ist auch varibel, also es könnte auch so aussehen:
                  12, 56, 2, 4678, 3, 95230
                  Eine Möglichkeit wäre, vorher eine SQL-Abfrage zu machen, wo das Feld ZAHL ausgelesen wird und die einzelnen Zahlen des Feldes in ein Array geschrieben werden und dann in einer Schleife die Where-Abfrage zusammenzubauen:

                  zahl LIKE "12%" OR zahl LIKE "56%" OR zahl LIKE "2%" OR zahl LIKE "4678%"

                  Aber das müsste doch auch eleganter gehen oder? Vorallem ist das glaub ich ziemlich langsam...
                  Zuletzt geändert von manuelone; 28.01.2009, 12:05.

                  Kommentar


                  • #10
                    Dann musst du mit REGEXP arbeiten, z.B.

                    REGEXP '^[0-9]{1,}'

                    Kommentar


                    • #11
                      SELECT *
                      FROM ...
                      WHERE zahl REGEXP '^[0-9]{1,}'

                      Ich hab das gerade mal ausprobiert, da bekomme ich dann alle Datensätze ausgegeben. Hab leider noch nicht wirklich etwas mit Regexp gemacht und in der Doku wird das auch nicht gerade easy erklärt. Könntest du mir evtl. kurz erläutern was du dir dabei jetzt gedacht hast, bzw. was davon jetzt z.b. 13, 23, 235, 3 wäre?

                      Kommentar


                      • #12
                        einfach hier: http://dev.mysql.com/doc/refman/5.1/en/regexp.html lesen

                        ^: am Anfang des Strings
                        [0-9]: Zahlen von 0 bis 9
                        {n,m}: mindestens n characters, max. m characters, ohne m = unendlich, also {1,} => mindestens 1 oder mehr.
                        Zuletzt geändert von asp2php; 28.01.2009, 12:27.

                        Kommentar


                        • #13
                          DANKE!
                          Dein Beispiel hab ich nicht verstanden ^^
                          Aber die Doku war dann doch hilfreich:

                          SELECT *
                          FROM ...
                          WHERE zahl REGEXP '^(561|4516|3)'

                          Kommentar

                          Lädt...
                          X