2016-10-31 2 views
1

Первая колонка содержит файлы изображений имена:SQL: получить подстроку из одного столбца и вставить его в другой столбец

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

я хочу сделать еще один столбец, который содержит расширения этих файлов изображений:

jpg 
png 
... 
xyz 

Но некоторые файлы изображений называются ab.gefs.jpg.

Я не могу принять string после последней (.) Точки.

+0

См (http://stackoverflow.com/questions/173868 /, как к экстракту-а-расширение файла-в-PHP). –

+1

У всех имен файлов есть расширение? – MonkeyZeus

+0

Вы пытаетесь сделать это в php или mysql? – Phiter

ответ

3

Вы можете полностью изменить имя файла, так что расширение приходит первым и обратное, то найдите первую точку, а затем вырезать все перед точкой - это было бы обращенная расширение -, то обратный снова:

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; 
SUBSTRING_INDEX() функция
+1

Мне это нравится ответ, но на основании вопроса OP это, вероятно, должно быть оператором обновления. – MonkeyZeus

+1

спасибо, я обновил свой ответ, чтобы использовать 'UPDATE' вместо' INSERT INTO' – borowis

+1

спасибо, что это сработало @BorysZibrov – Azhar

3

MySQL является довольно много специально созданы для того, что вы пытаетесь сделать: [? * Как извлечь расширение файла в PHP *]

> 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

да, это похоже на гораздо лучший способ, чем реверсирование строки 2 раза :) спасибо, @ardavey – borowis

Смежные вопросы