SQL nvarchar命令

时间:2014-02-25 06:09:20

标签: sql sql-order-by

我的数据库中的表存在问题。

问题在于:

为什么'BP99999'大于'BP100000'

每当我通过DESC查询此列的排序位置时,'BP99999'作为第一行而不是'BP100000'

其他信息:我的列类型为nvarchar

你对此有什么建议吗?

非常感谢!

3 个答案:

答案 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