我有一个旧的数据库,其中插入了一些值,如下所示:
blablabla2008
blablabla2010
blablabla2011
...其他一些(最新的)值作为数字插入:
2013
2014
有没有办法在sql查询中对此进行排序?
答案 0 :(得分:2)
如果你关心的数字是最后四个字符(如你的例子中所示),那么这很容易:
order by right(col, 4)
否则,问题就更难了,因为MySQL没有提供查找或使用字符类的方法。一种方法是这样的:
order by (case when substring(col, -2, 1) not between '0' and '9'
then right(col, 1) + 0
when substring(col, -3, 1) not between '0' and '9'
then right(col, 2) + 0
when substring(col, -4, 1) not between '0' and '9'
then right(col, 3) + 0
when substring(col, -5, 1) not between '0' and '9'
then right(col, 4) + 0
. . .
end)
即,检查每个位置是否为非数字字符。