Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie muss man die TRIM Funktion richtig einsetzen?

Einklappen

Neue Werbung 2019

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

  • Wie muss man die TRIM Funktion richtig einsetzen?

    Hallo zusammen,

    ich habe in der Datenbank ein VARCHAR Feld das ich einfach "nummer" nenne in das man Datensätze eintragen kann. Es können allerdings auch Datensätze mit Leerzeichen sein.

    Das Problem ist das manche Leute nicht darauf achten und zu viele Leerzeichen einfügen (Beispiel: AB xxxxx 123). Die x stehen für Leerzeichen.

    Wenn ich nun nach dieser Nummer per PHP suche wird es logischerweise nicht gefunden, da ich nach "AB 123" gesucht habe das nur ein Leerzeichen enthält.

    Da die Daten schon alle in der DB sind und ich sie nicht verändern darf, würde ich gerne wissen wollen wie man mit solchen Fällen umgehen muss.

    Ich dachte da an die TRIM Funktion, doch wie setze ich sie in mysql z.b. richtig ein wenn der SELECT so aussieht:

    PHP-Code:
    SELECT FROM tabelle WHERE nummer 'AB 123' 
    Ich dachte dies würde helfen, tut es nur leider nicht:
    PHP-Code:
    SELECT FROM tabelle WHERE TRIM('nummer') = 'AB 123' 

  • #2
    Die Trim-Funktionen entfernen nur Zeichen am Anfang und Ende der Zeichenkette, aber keine doppelten (Leer)Zeichen innerhalb der Zeichenkette. Ist leider am Beispiel nicht zu erkennen, wo genau zu viele Leerzeichen sind.

    Kommentar


    • #3
      Oh, sorry. Ja ... es handelt sich tatsächlich um die Leerzeichen dazwischen, also zwischen den Buchstaben und Zahlen.

      Kommentar


      • #4
        da brachst du replace
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

        Kommentar


        • #5
          Ach, jetzt sehe ich auch erst das diese Funktion das gar nicht kann, ja wie macht man es denn dann??

          Das war mein Ansatz:
          http://www.tutorialarena.com/mysql/m...m-function.php

          Kommentar


          • #6
            Zitat von BlackScorp Beitrag anzeigen
            da brachst du replace
            Ja gut, aber ein Leerzeichen muss ja bleiben?

            Kommentar


            • #7
              Hallo.
              Wenn Du fit genug mit Regex bist, dann ist die Lösung für dich.
              http://dev.mysql.com/doc/refman/5.1/de/regexp.html

              Kommentar


              • #8
                Zitat von ePole Beitrag anzeigen
                Ja gut, aber ein Leerzeichen muss ja bleiben?
                dann must du deine eingabe der user validieren, und wenn die nicht korrekt ist, kriegt der user halt keine korrekten ergebnisse.. alternativ kannst du noch sowas wie google es macht umsetzen "meinten sie vielleicht das hier?"
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                Kommentar


                • #9
                  Gibt es denn eine Funktion die Formatierungen löscht. Ich habe so das Gefühl das dort nicht nur die Leerzeichen ein Problem sind. Oder ist das Feld VARCHAR hier falsch gewählt?

                  Kommentar


                  • #10
                    Zitat von amplituda Beitrag anzeigen
                    Hallo.
                    Wenn Du fit genug mit Regex bist, dann ist die Lösung für dich.
                    http://dev.mysql.com/doc/refman/5.1/de/regexp.html
                    Danke, aber mit Regex habe ich mich noch gar nicht befasst...wäre ja mal Zeit

                    wie könnte denn dann ein solcher SELECT aussehen wenn man damit versuchen würde die Leerzeichen vorne und hinten komplett wegzunehmen und zwischen den Texten nur eins übrig lassen?

                    Kommentar


                    • #11
                      Ja, Regex ist es Wert das man in kennt.
                      Der SELECT Statement könnte so aussehen.
                      SELECT * FROM tabelle WHERE nummer REGEXP '^[[:space:]]*AB[[:space:]]*123[[:space:]]*$';

                      Kommentar

                      Lädt...
                      X