[MySQLFAQ]系列–快速對調欄位裡面的某些列

科技小先鋒發表於2017-11-08
問題:表 t 有個欄位叫做 c,現在想要把 c 裡面的第 10 和 第 11 列位置對調一下,咋辦啊?

答案:用下面的辦法吧,不過本例只對ascii字元有作用,中文或其他的就另外想辦法。
mysql>set @pos1 = 10;
mysql>set @pos2 = 11;
mysql>UPDATE t SET c = CONCAT( 
LEFT(c,@pos1-1),   -- 第 10 列以前的值
SUBSTR(c,@pos2,1),  -- 第 11 列的值
SUBSTR(c,@pos1+1,@pos2-@pos1-1),  -- 第 10 到第 11 列之間的值
SUBSTR(c,@pos1,1),  -- 第 10 列
RIGHT(c, LENGTH(c) - @pos2)); -- 第 11 列之後的值
其實很簡單的吧 ?
本文轉自葉金榮51CTO部落格,原文連結:http://blog.51cto.com/imysql/308631,如需轉載請自行聯絡原作者


相關文章