hari: in mysql queries nur einen teil eines keys abfragen

hallo,
ich möchte mit mysql aus einem table zb nur namen auslesen, deren anfangsbuchstaben mit 'h' beginnen, oder die an der 2. stelle im namen ein 'a' haben. wie kann ich das machen?

grüsse

  1. Hallo

    ich möchte mit mysql aus einem table zb nur namen auslesen, deren anfangsbuchstaben mit 'h' beginnen,

    Wildcard für beliebige Zeichen ist das Prozentzeichen %.

    oder die an der 2. stelle im namen ein 'a' haben. wie kann ich das machen?

    MySQL kennt die Funktion SUBSTR, siehe Handbuch, String Functions.

    Freundliche Grüße

    Vinzenz

    PS: Was hat Deine Frage mit "Teil eines Keys" zu tun?

    1. »»

      PS: Was hat Deine Frage mit "Teil eines Keys" zu tun?

      nix, mir ist nur die bezeichnung field nicht eingefallen. ;)

      grüsse und danke

      1. vielleicht kann mir noch jemand kurz helfen bitte?
        ist schon so spät und ich bekomme das nicht richtig hin:

        mysql_query("select name from table where substr('name',1,1) = 'h'")

        laut mysql manual würde das - wenn ich es richtig verstanden habe - "select name from table where n = 'h'" ergeben.

        ich will aber "select name from table where 'anfangsbuchstabe von name' = 'h'" abfragen.

        wie mache ich das?

        grüsse

        1. Hallo

          vielleicht kann mir noch jemand kurz helfen bitte?
          ist schon so spät und ich bekomme das nicht richtig hin:

            
          select name from table where substr('name',1,1) = 'h'
          

          den völlig überflüssigen PHP-Kram habe ich weggestrichen.

          In MySQL ist es nicht nötig, Namen wie "name" zu quoten. Und wenn man es macht, dann muss man es richtig machen. Das einfache Hochkomma ist in diesem Fall falsch. Wie es richtig geht, steht im Handbuch.

          Freundliche Grüße

          Vinzenz

          1. ich habe es auch ohne hochkomma versucht und da gab es dann:
            Warning: mysql_result(): supplied argument is not a valid MySQL result resource

            1. Hallo

              ich habe es auch ohne hochkomma versucht und da gab es dann:

              wie lautete Dein SQL-Statement? Es ist stets eine gute Idee, SQL-Statements in einer Variable zusammen zu bauen, dann kann man das SQL-Statement zu Debugzwecken leicht ausgeben.

              Warning: mysql_result(): supplied argument is not a valid MySQL result resource

                
              SELECT bild_name  
              FROM bilder  
              WHERE SUBSTRING(bild_name, 1, 1) = 'a' -- Einsatz von SUBSTRING  
              
              

              liefert mir das gleiche erwartete Ergebnis wie

                
              SELECT bild_name  
              FROM bilder  
              WHERE bild_name LIKE 'a%' -- Einsatz des Jokerzeichens %  
              
              

              Meine Tabelle und meine Spalten heißen eben ein klein wenig anders.

              Freundliche Grüße

              Vinzenz

              1. select sum(re_gegeben) from $rechnungstable where substr(re_gewerk,1,1) = '$catcount'

                spuckt mir lauter Warning: mysql_result(): supplied argument is not a valid MySQL result resource

                eine zeile darüber:
                select sum(os_schaetzung1) from $maintable where c_number = '$catcount'

                funktioniert klaglos.

                kann es vielleicht sein, dass es ein prob ist, dass re_gewerk ein string ist und $catcount (vermutlich) integer?

                1. Hallo

                  select sum(re_gegeben) from $rechnungstable where substr(re_gewerk,1,1) = '$catcount'

                  Das ist keine SQL-Anweisung, das ist irgendwelcher irrelevanter PHP-Kram. Wie ich Dir bereits geraten habe, ist es stets eine gute Idee, in etwa so vorzugehen:

                  $sql = "select sum(re_gegeben) from $rechnungstable where substr(re_gewerk,1,1) = '$catcount'";  
                  echo $sql;    # gebe zu Debugzwecken das SQL-Statement aus.  
                  
                  

                  ...

                  Freundliche Grüße

                  Vinzenz

                  1. Die genaue SQL-Anweisung wäre z.B.:

                    select sum(re_gegeben) from table where substr(re_gewerk,1,1) = '1'

                    Grüße

                    1. Hallo hari,

                      select sum(re_gegeben) from table where substr(re_gewerk,1,1) = '1'

                      "table" ist ein reserviertes Wort - schreibe den Tabellennamen in Backticks (`) oder (imho besser) verpass der Tabelle einen anderen Namen.

                      Grüße aus Nürnberg
                      Tobias

            2. echo $begrüßung;

              ich habe es auch ohne hochkomma versucht und da gab es dann:
              Warning: mysql_result(): supplied argument is not a valid MySQL result resource

              Das ist ein Folgefehler den PHP meldet. Du hast einer Funktion einen Wert übergeben, der nicht erwartet wurde. Diesen hast du sicher von einer anderen Funktion als Rückgabewert bekommen. Die mysql_*-Funktionen haben die Angewohnheit, im Fehlerfall statt einer Ressource ein false liefert. Darauf sollte man reagieren und nicht einfach im Code weitermachen. Die zu dem false-Rückgabewert  gehörende Fehlermeldung muss man explizit mit mysql_error() abfragen. Eine beispielhafte vollständige MySQL-Abfrage findest du im MySQL-Kapitel des PHP-Handbuches.

              echo "$verabschiedung $name";

    2. Hallo Vinzenz,

      MySQL kennt die Funktion SUBSTR, siehe Handbuch, String Functions.

      Nein, die Funktion heißt SUBSTRING.

      Grüße aus Nürnberg
      Tobias

      1. Hallo Tobias,

        MySQL kennt die Funktion SUBSTR, siehe Handbuch, String Functions.
        Nein, die Funktion heißt SUBSTRING.

        Ja, die Funktion heißt SUBSTRING(), ja SUBSTR() ist ebenfalls korrekt, siehe letzter Absatz des Doku-Abschnittes, ach ja MID() wäre auch richtig.

        Freundliche Grüße

        Vinzenz,

        der sich ein Ingrid-Posting ersparen wollte.