我需要在一个有点古怪的方式在网站上的项目进行排序:在SQL查询中排序,忽略字段开头的数字?
只是说我的数据是:
681A
500AB
300BB
我需要它是在这个秩序,所以我需要它无视在开始时的数字以及它遇到的第一个字母的顺序。
有没有办法在SQL查询中做到这一点?或者我将不得不在页面上创建一个数组,并用PHP这种方式进行排序?
如果有人能提供帮助,请提前致谢。
我需要在一个有点古怪的方式在网站上的项目进行排序:在SQL查询中排序,忽略字段开头的数字?
只是说我的数据是:
681A
500AB
300BB
我需要它是在这个秩序,所以我需要它无视在开始时的数字以及它遇到的第一个字母的顺序。
有没有办法在SQL查询中做到这一点?或者我将不得不在页面上创建一个数组,并用PHP这种方式进行排序?
如果有人能提供帮助,请提前致谢。
您可以尝试这样做的一种方法是在查询中添加一个子字符串并使用它进行排序。
请注意,此方法仅当您总是有3个字符忽略。
SELECT fieldA, fieldB, SUBSTRING(fieldB,4) as subfieldB FROM myTable order by subsfieldB
您的表中创建额外的列存储的形式,这些缩写你想进行排序。
如果前缀号码始终是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
看看如何使SQL正则表达式替换或尝试使用替换功能有些东西是这样的:
SELECT * FROM (
SELECT REPLACE([YourCol],'0','') AS COL, *
FROM [table]
) as T
ORDER BY [COL]
select * from table order by substring(NNNN,startposition,endposition) asc
当你提供一个答案时,请也提供一个解释。只是代码不能帮助人们理解。顺便说一句,我不认为这甚至可以回答这个问题 – Mikkel 2016-12-16 09:35:58
谢谢,这看起来可能是最好的选择,因为它可能是任何数量的长度,所以我只需要取号关闭前,现在来提高我的正则表达式技巧 – rosc0 2011-03-23 10:53:54