在SQL查询中排序,忽略字段开头的数字?

时间:2011-03-23 10:25:41

标签: php sql sorting

我需要以一种奇怪的方式对网站上的项目进行排序:

说我的数据是:

681A
500AB
300BB 

我需要它按照这个顺序,所以我需要它在开始时忽略它的数字并按它遇到的第一个字母顺序。

有没有办法在SQL查询中执行此操作?或者我是否必须在页面上创建一个数组并使用php进行排序?

如果有人可以提供帮助,请提前致谢。

5 个答案:

答案 0 :(得分:1)

您可以尝试这样做的方法是在查询中添加子字符串并使用它进行排序。

请注意,仅当始终要忽略3个字符时才会有效。

SELECT fieldA, fieldB, SUBSTRING(fieldB,4) as subfieldB FROM myTable order by subsfieldB

答案 1 :(得分:0)

您必须在表格中创建其他列,并将这些缩写存储在您要排序的表单中。

答案 2 :(得分:0)

如果前缀号总是3位数,那么这是合理的:

SELECT SUBSTR(field1,4) AS shortfield1
FROM table
ORDER BY shortcol

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr

答案 3 :(得分:0)

看看如何在sql上进行正则表达式替换或尝试使用替换函数这样的事情:

SELECT * FROM (
    SELECT REPLACE([YourCol],'0','') AS COL, *
    FROM [table]
) as T
ORDER BY [COL]
  • 请注意,正则表达式没有很好的性能

答案 4 :(得分:0)

select * from table order by substring(NNNN,startposition,endposition) asc