我的数据库中的表存在问题。
问题在于:
为什么'BP99999'
大于'BP100000'
?
每当我通过DESC
查询此列的排序位置时,'BP99999'
作为第一行而不是'BP100000'
其他信息:我的列类型为nvarchar
你对此有什么建议吗?
非常感谢!
答案 0 :(得分:2)
目前BP之后的9大于1导致您面临的问题。
可能的解决方案是您需要从列值中取出前2个字符,然后对整数值进行排序。
您可以尝试这样的事情:
SELECT [BProject_ID]
FROM [Workload].[dbo].[Bending_Projects]
ORDER BY RIGHT([BProject_ID], LEN([BProject_ID]) - 2)
答案 1 :(得分:0)
ORDER BY RIGHT([BProject_ID], LEN([BProject_ID]) - 2)
或更简单
ORDER BY SUBSTRING([BProject_ID],2,8000)
答案 2 :(得分:0)
与其他人的回答一样,您只需要收集订购号码
ORDER BY RIGHT(BP_ID, (CHAR_LENGTH(BP_ID)) - 2 )
但你仍然需要将字符串转换为整数
ORDER BY CAST(RIGHT(BP_ID, (CHAR_LENGTH(BP_ID)) - 2 ) AS UNSIGNED)
注意:我使用的是MySQL