2013-04-29 89 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

相关问题