Mysql选择查询字符串操作

Mysql选择查询字符串操作,mysql,sql,Mysql,Sql,我创建了以下查询,该查询在图像扩展之前为inject\u thumb,但该查询在所有条件下都不起作用 SELECT `user_id`,`image`, CONCAT(SUBSTRING_INDEX(`image`,'.',1),'_thumb.',SUBSTRING_INDEX(`image`,'.',-1)) as `image_thumb` FROM `user_details` 结果 user_id |image |image_thumb --------|---

我创建了以下查询,该查询在图像扩展之前为inject
\u thumb
,但该查询在所有条件下都不起作用

 SELECT `user_id`,`image`, 
 CONCAT(SUBSTRING_INDEX(`image`,'.',1),'_thumb.',SUBSTRING_INDEX(`image`,'.',-1))
 as `image_thumb` 
 FROM `user_details`
结果

user_id |image      |image_thumb
--------|-----------|--------------------
    1   |gk1.JPG    |gk1_thumb.JPG
    2   |Tulips.jpg |Tulips_thumb.jpg
    3   |vnc.1.jpg  |vnc_thumb.jpg
    4   |NULL       |NULL
    10  |NULL       |NULL
user\u id
3
row
image\u thumb
不需要

我想得出以下结论:

    3   |vnc.1.jpg  |vnc.1_thumb.jpg
您能帮我创建正确的查询吗?

可能类似于:

> select @extension:=substring_index('vnc.1.JpG','.',-1) ext,
replace('vnc.1.JpG',@extension,concat('_thumb.',@extension)) thumb;
+-----+------------------+
| ext | thumb            |
+-----+------------------+
| JpG | vnc.1._thumb.JpG |
+-----+------------------+
或者用对子字符串\u索引的多次调用替换变量用法:

> select replace('vnc.1.JpG',
                 substring_index('vnc.1.JpG','.',-1),
                 concat('_thumb.',substring_index('vnc.1.JpG','.',-1))) thumb;
+------------------+
| thumb            |
+------------------+
| vnc.1._thumb.JpG |
+------------------+

使用
子字符串
长度
子字符串索引

SELECT `user_id`,
       `image`, 
       CONCAT(
         SUBSTRING(`image`,
                   1,
                   LENGTH(`image`) - LENGTH(
                                         SUBSTRING_INDEX(`image`,'.',-1)
                                     )-1
         ),
         '_thumb.',
         SUBSTRING_INDEX(`image`,'.',-1)
) as `image_thumb` 
FROM
     `user_details`

(我尝试将查询设置为尽可能可读的格式)

感谢您的快速回复,但此查询仅适用于
用户id
3
和其他行结果错误,