【发布时间】:2023-01-09 21:41:08
【问题描述】:
当我使用 MSSQL 查询对名称进行排序时...
查询:从 dto.test 中选择名称按名称升序排序
我得到 a1,a10,a2,a3 而不是a1,a2,a3,a10
有谁知道需要对特定顺序进行哪些查询更改a1,a2,a3,a10
【问题讨论】:
-
理想情况下,修复您的设计。如果您希望值按数值排序,请使用数值数据类型将数值部分存储在单独的列中。在字符串
'10'是小于'2',所以顺序是正确的。 -
@Larnu 有什么方法可以实现字符串数据类型,将此列视为条形码 AAA1、AAA101、AAA2
-
正如我所说,修复您的设计将是“最佳”解决方案。
-
否则,您需要在查询中将值拆分为单独的部分(字母和数字部分),然后对其进行排序。我希望您没有像
'a10a'这样的值。 -
你需要修正你的设计。字符串是字符串,不是数字。
a2总是在a10之前。你问的是非常强烈表明您实际上需要两个单独的列。您可以拆分字符串并将第二部分转换为 int 但这不会使用任何索引并导致非常昂贵的排序
标签: sql-server