Zeichenfolgeübereinstimmung am rechten Rand in MySQL

8

Ich möchte die Dateierweiterung aus einem Feld in MySQL extrahieren, das Dateinamen enthält. Das bedeutet, ich muss das endgültige "." Zeichen im Feld und extrahiere danach alles. Das folgende Codebeispiel funktioniert teilweise:

%Vor%

, außer dass es für Fälle, in denen der Dateiname mehr als ein '.' enthält, herunterfällt, wo er zu viel extrahiert. In den meisten Programmiersprachen würde ich eine Funktion finden, die mir die genaueste Übereinstimmung bringt, aber ich kann keine solche Sache für MySQL finden, noch kann ich eine Diskussion von Leuten finden, die das gleiche Problem hatten und einen Workaround gefunden haben.

    
Tim Martin 17.09.2009, 13:52
quelle

2 Antworten

15

Es gibt die Funktion substring_index , die genau funktioniert wonach du suchst:

%Vor%     
Martin 13.09.2012, 07:38
quelle
2

Bearbeiten :
Siehe Martins Antwort, die Verwendung von substring_index() , mit einem negativen Zählparameter ist ein VIEL besser Ansatz!
Ich verlasse mich selbst (eigentlich ist das nicht möglich ...), Martins Antwort aufhebend; Ich wünschte, ich könnte ihm die angenommene Antwort geben ... Vielleicht wird OP das tun.

Ursprüngliche Antwort:
Das Folgende könnte den Trick machen (ATN: length kann um 1 abweichen, kann auch den Fall eines Dateinamens ohne Punkt behandeln.)

%Vor%

Beachten Sie jedoch, dass diese Art des Post-facto-Parsens ziemlich teuer sein kann (langsam lesen), und Sie können erwägen, die Dateierweiterung zum Zeitpunkt des Ladens in eine separate Spalte zu extrahieren.

    
mjv 17.09.2009 14:08
quelle

Tags und Links