第一列包含图像文件名称:
abcd.jpg
abcdef.png
...
abcdjs.xyz
我想创建另一个包含这些图像文件扩展名的列:
jpg
png
...
xyz
但有些图像文件的名称类似于ab.gefs.jpg
。
我无法在最后一个(。)点之后取string
。
答案 0 :(得分: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;
答案 1 :(得分:3)
MySQL的SUBSTRING_INDEX()
功能非常适合你想要做的事情:
> 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)