2014-03-26 45 views
1

我已經創建了下面的查詢,查詢圖像擴展之前注入_thumb,但查詢是不是在所有條件下工作,Mysql的選擇查詢字符串操作

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_id3image_thumb不是預期的

我想要結果:

3 |vnc.1.jpg |vnc.1_thumb.jpg 

你可以請任何人幫我創建正確的查詢嗎?

回答

1

使用SUBSTRINGLENGTHSUBSTRING_INDEX組合:

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` 

(我試圖將查詢格式化爲reada儘可能)

+0

查詢工作很好,謝謝你 – Girish

0

也許是這樣的:

> 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 | 
+-----+------------------+ 

或替換變量的用法與多次調用SUBSTRING_INDEX:

> 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 | 
+------------------+ 
+0

感謝您的快速回復,但這個查詢只會與'user_id'' 3'和其他行的結果錯誤, – Girish