Zeichenanzahl im String

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

  • Zeichenanzahl im String

    Hallo ihr!
    Kennt jemand eine Funktion in mysql, mit der man bestimmte Zeichen in einem String zählen kann?

    Beispiel:
    1-3-7-12-98

    Rauskommen muß 4.

    Danke schonmal.
    Gruß oms
    {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

  • #2
    Rauskommen muß 4.
    ich gehe mal von der suche nach '-' aus....

    hatte heute mal ein wenig gesucht, aber auch nichts gefunden.

    habe aber mal noch einen kumpel gefragt, wenn ich/DU glück habe/HAST, sollte ich morgen eine antwort haben....

    ansonsten hätte ich schon mal einen alternativvorschlag, wenn es über die DB nicht direkt gehen sollte.

    lies das ganze feld ein und counte die vorkommensanzahl mit hilfe von php.
    ist zwar nicht schön, aber wohl die letzte möglichkeit, wenn es nicht in der DB funktionieren sollte.

    hier schon mal ein paar links

    http://de.php.net/manual/de/function.count-chars.php

    http://de.php.net/manual/de/function.explode.php
    $array = explode ("-", $deinstring);
    nach dem explode hat man mit count($array)-1 die anzahl der zeichen.

    das hier müsste aber der ideale weg (ohne DB) sein
    http://de.php.net/manual/de/function.substr-count.php
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ja, ich meinte die "-", sorry.
      Mit PHP, klar, kein Problem. Ich bin hier bloß gerade beim Code optimieren und wollte die DB möglichst viel, wenn nicht sogar alles machen lassen.

      Wäre cool, wenn du die Variante mit MySQL rausbekommen würdest.
      Geht da nicht irgendwas mit MATCH etc. ?

      Gruß oms
      {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

      Kommentar


      • #4
        ja. da bin ich auch drübergestolpert gewesen. der liefert dir nur nicht die anzahl. wäre ja zu einfach gewesen ....


        MATCH (col1,col2,...) AGAINST (expr)
        MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE)
        MATCH ... AGAINST() is used for full-text search and returns relevance - similarity measure between the text in columns (col1,col2,...) and the query expr. Relevance is a positive floating-point number. Zero relevance means no similarity. MATCH ... AGAINST() is available in MySQL version 3.23.23 or later. IN BOOLEAN MODE extension was added in version 4.0.1. For details and usage examples, see section 6.8 MySQL Full-text Search.

        er zeigt dir nur das vorkommen an. mehr leider nciht.
        http://www.mysql.com/doc/en/Fulltext_Search.html

        die antwortmail ist übrigens da. ist aber nicht gerade sehr vielversprechend....

        hab leider keine gebrauchsfertige lösung parat...

        http://www.mysql.com/doc/en/String_functions.html

        oder

        http://www.mysql.com/doc/en/String_c...functions.html

        und dann vielleicht was mit REGEXP... viel Spass.
        eigentlich schade, oder ....
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          @Abraxax
          Danke für die Bemühungen.

          Mit FIND_IN_SET könnte ich das hinbiegen. Muß ich halt nur die "-" durch "," ersetzen. Das müßte pfunzen, da mir die letzte Zahl im String zur Verfügung steht.

          Aber so richtig glücklich bin ich damit auch nicht.

          Laßt meinen Hoster bloß möglichst schnell auf MySQL >=4.0 updaten. Dann könnte ich endlich Unterabfragen benutzen und bräuchte nicht diese abgef**kte Variante wählen. Aber darauf kann ich wohl noch ein kleine Ewigkeit warten...

          oms
          {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

          Kommentar


          • #6
            deine suche war ja bisher nach -

            wenn du FIND_IN_SET nimmst, musst du ja die zahlen durch komma ersetzen, wenn ich das richtig verstanden habe, um auf die 4 zu kommen.
            das ist es besitmmt auch nciht. oder?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Ob 5 oder 4 ist eigentlich egal, Hauptsache der String mit einem "," mehr bekommt ne höhere Zahl. Im Prinzip hab ich eine Zeichenkette bestehend aus Zahlen, die durch irgendein Zeichen getrennt werden. Gegeben ist mir immer die letzte Zahl. Ich brauche nur die Anzahl der Zahlen im String.

              Müßte eigentlich klappen...
              Code:
              SELECT FIND_IN_SET("98","1,3,7,12,98"); #Beispiel von oben
              erhofftes Resultat: 5
              {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

              Kommentar


              • #8
                ok. mir war nicht bekannt, das du IMMER DIE LETZTE zahl kennst.

                so müsste es klappen, aber nur, wenn dir wirklich die letzte zahl im SET bekannt ist......
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Jo, es pfunzt. Jetzt kann ich endlich dieses blöde Menü fertigstellen.

                  thx@Abraxax

                  Gruß oms
                  {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

                  Kommentar


                  • #10
                    also wer jetzt das nicht nur mit komma trennt, der kann auch diese variante in betracht ziehen:
                    select (length(spalte)-length(replace(spalte,'-',''))) as zeichenanzahl...
                    meine Projekte bestaunen: http://www.kleiza.de

                    Kommentar


                    • #11
                      Also für das Problem ist doch find_in_set völlig falsch, viel zu viele prämissen.
                      Die Lösung von Campus erscheint viel logischer, nur eine prämisse: - wird nur als trennzeichen verwendet.
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Aber die Zahlen im String können doch unterschiedlich viele Ziffern haben...
                        {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

                        Kommentar


                        • #13
                          wat ?
                          meine Projekte bestaunen: http://www.kleiza.de

                          Kommentar


                          • #14

                            Sorry, der Groschen ist eben reichlich spät gefallen. Nicht mein Tag heute. Die Methode ist super. *peinlich*
                            Danke
                            {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

                            Kommentar


                            • #15
                              da muss ich oms beipflichten. die variante von campus ist wohl der idealste weg.

                              und wieder was gelernt ...
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X