我的网站上有一个数据库,其中有一长串#(产品#),全部包含字母(例如 TC-345、TC-234 或 HC-236W 123-234-PWD...)
我们可以按数字和字母顺序对网站上的# 进行排序吗?
目前我们按字母顺序存储,因此顺序为(10-PDW、100-PDW、110-PDW 2-PDW)
我们想将其更改为(2-PDW、10-PDW、100-PDW、110-PDW)
我的开发人员说“色系编号永远无法按数字排序。我们需要为所有色系添加另一个数字字段到数据库中,然后对该字段进行数字排序。现在这些数字按字母顺序排列。”
如何对数字和字母进行排序?我们希望避免添加数字字段 - 这只是额外的工作。有什么新技术可以做到这一点吗?
有可能的。一种方法是使用对字符串进行加权的函数,该函数对数字的权重远远大于对字母的权重。像这样的事情:
letbers = ["10-PDW", "100-PDW", "110-PDW", "2-PDW"]
def weight(letber):
if letber == "":
return 0
n = ord(letber[-1])
if letber[-1] in "0123456789":
n *= 256^6 # 6 because maximum key length is 6
return 256*n + weight(letber[:-1])
print sorted(letbers, key = weight)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)