2013-02-08 102 views
3

我有一個表作爲重命名文件名在表

'310', 'D', '1', '0', 'Clowns.jpg', ?, '63527560196' 
'311', 'D', '1', '1', 'Clowns_102_x_102.jpg', ?, '63527560197' 
'312', 'D', '1', '1', 'Clowns_45_x_45.jpg', ?, '63527560197' 
'313', 'D', '1', '1', 'Clowns_80_x_80.jpg', ?, '63527560197' 
'314', 'D', '1', '1', 'Clowns_120_x_120.jpg', ?, '63527560198' 
'315', 'D', '1', '1', 'Clowns_180_x_180.jpg', ?, '63527560198' 
'316', 'D', '1', '1', 'Clowns_300_x_300.jpg', ?, '63527560198' 

我想叫小丑文件重命名爲小丑,這樣數據看起來像這樣

'310', 'D', '1', '0', 'Clowning.jpg', ?, '63527560196' 
'311', 'D', '1', '1', 'Clowning_102_x_102.jpg', ?, '63527560197' 
'312', 'D', '1', '1', 'Clowning_45_x_45.jpg', ?, '63527560197' 
'313', 'D', '1', '1', 'Clowning_80_x_80.jpg', ?, '63527560197' 
'314', 'D', '1', '1', 'Clowning_120_x_120.jpg', ?, '63527560198' 
'315', 'D', '1', '1', 'Clowning_180_x_180.jpg', ?, '63527560198' 
'316', 'D', '1', '1', 'Clowning_300_x_300.jpg', ?, '63527560198' 

所以,我想這個

UPDATE new_images 
SET 
filespec = 'clowns100' + MID(filespec, 7, LENGTH(filespec) - 6); 

但是我得到了

錯誤代碼:1292截斷不正確DOUBLE值: 'clowns100'

+0

你舉的例子很明顯從您的規格不同,所以這是正確的? – Strawberry 2013-02-08 16:47:00

+0

clowns100'如何與您的問題相關? – 2013-02-08 16:47:39

回答

4

使用REPLACE

UPDATE new_images SET filespec = REPLACE(filespec, 'Clowns','Clowning') 

UPDATE 1

爲您的查詢相當於MySQL的代碼是

UPDATE new_images 
SET filespec = CONCAT('clowns100', MID(filespec, 7, CHAR_LENGTH(filespec) - 6)); 
+0

那麼爲什麼不使用'REPLACE(filespec,'.jpg','Clowning')'?順便說一下,替換是區分大小寫的。 – 2013-02-08 17:04:07

+0

CONCAT訣竅,謝謝 – 2013-02-08 17:21:42

+0

@StephenBouffe歡迎你':D'。 – 2013-02-08 17:22:06

1

您可以使用子在SQL

UPDATE new_images SET filespec = 'Clowning'+substring('Clowns.jpg', 7, len('Clowns.jpg') - 6) where filespec like 'Clowns%'