2016-10-31 8 views
1

Erste Spalte Einfügen enthält die Namen von Bilddateien:SQL: von einer Spalte Teilzeichen erhalten und in andere Spalte

abcd.jpg 
abcdef.png 
... 
abcdjs.xyz 

Ich möchte eine andere Spalte machen, die Erweiterungen dieser Bilddateien enthält:

jpg 
png 
... 
xyz 

Aber einige Bilddateien heißen ab.gefs.jpg.

Ich bin nicht in der Lage, die string nach dem letzten (.) Punkt zu nehmen.

+0

See (http://stackoverflow.com/questions/173868/how-to-extract-a-Dateierweiterung-in-php). –

+1

Haben alle Dateinamen garantiert eine Erweiterung? – MonkeyZeus

+0

Sie versuchen, dies in PHP oder MySQL zu tun? – Phiter

Antwort

3

Sie können den Dateiumzukehren, so dass die Verlängerung zuerst kommt und umgekehrt, dann den ersten Punkt finden, dann schneiden Sie alles vor dem Punkt -, dass die umgekehrte Verlängerung wäre -, dann wieder umkehren:

UPDATE some_table t1, some_table t2 
SET t1.some_column = REVERSE(SUBSTRING(REVERSE(t2.filename) FROM 1 FOR LOCATE('.', REVERSE(t2.filename)))) 
WHERE t1.primary_key = t2.primary_key; 
+1

Ich mag diese Antwort, aber basierend auf der OP-Frage sollte dies wahrscheinlich eine Update-Anweisung sein. – MonkeyZeus

+1

Danke, ich aktualisierte meine Antwort zu verwenden 'UPDATE' anstelle von' INSERT INTO' – borowis

+1

Danke, es funktioniert @BorysZibrov – Azhar

3

MySQL SUBSTRING_INDEX() Funktion ist ziemlich maßgeschneidert für das, was Sie zu tun versuchen: [? * Wie eine Dateierweiterung in PHP zu extrahieren *]

> select substring_index('foo.png', '.', -1); 
+---------------------------------------+ 
| substring_index('foo.png', '.', -1) | 
+---------------------------------------+ 
| png         | 
+---------------------------------------+ 
1 row in set (0.01 sec) 

> select substring_index('foo.bar.jpg', '.', -1); 
+-------------------------------------------+ 
| substring_index('foo.bar.jpg', '.', -1) | 
+-------------------------------------------+ 
| jpg          | 
+-------------------------------------------+ 
1 row in set (0.00 sec) 
+0

Ja, das scheint viel besser Weg als eine Zeichenfolge 2 Mal umzukehren :) Danke, @ardavey – borowis

Verwandte Themen