2013-04-29 63 views
0

重新排序行更新數據庫字段值

在我的數據庫是一排隨機順序具有下列特徵

HFMNLBX#&我

這是輸入古怪,並且各行如HF和FH,它們都等同於系統。有沒有辦法更新所有行按字母順序排列,然後結束字符?

感謝

+0

也許這一個幫助http://stackoverflow.com/questions/3427208/sorting-string-characters-in-mysql – 2013-04-29 20:29:56

+0

你當前的MySQL查詢是什麼? – Jocelyn 2013-04-29 20:31:07

+0

我還沒有查詢。我想將行設置爲字母順序,例如HML將變爲HLM,XB將變爲BX等等 – 2013-04-29 20:33:05

回答

1

這裏是按字母順序排列在一列中的字符的方式:

select concat((case when col like '%A%' then 'A' else '' end), 
       (case when col like '%B%' then 'B' else '' end), 
       . . . 
       (case when col like '%Z%' then 'Z' else '' end) 
      ) as newcol 
from t 

注意,這不處理重複字母。

我不確定你的意思是「最後的字符」。例如,您可以使用子查詢來處理它們的一部分。

或者,如果你想#後保留的一切,是這樣的:

select concat((case when col like '%A%#%' then 'A' else '' end), 
       (case when col like '%B%#%' then 'B' else '' end), 
       . . . 
       (case when col like '%Z%#%' then 'Z' else '' end), 
       substring(col, locate('#', col) - 1) 
      ) as newcol 
from t 
+0

旁註:這將刪除任何非字母字符,如「#」 「或者」!「,我想這個問題的起始者最後想要他們(但很難理解) – 2013-04-29 23:18:06

+0

@nicogawenda。 。 。第一個查詢將會。第二個將所有內容保存在'#'之後。 – 2013-04-29 23:20:46

+0

嗯好吧,確定非alpha字符被#前綴,然後冷卻解決方案:) – 2013-04-29 23:24:56