在 SQL Server 中对具有数值的 VARCHAR 列进行排序
当处理可能同时包含数字和字母的 VARCHAR 列时,排序呈现出如果您希望数值按数字顺序排列,请挑战。默认情况下,SQL Server 会按字母顺序对此类列进行排序,这在这种情况下是不可取的。
为了实现所需的排序行为,解决方案涉及用字符填充数值以确保所有字符串具有相同的长度。这允许 SQL Server 按数字方式对数据进行排序。
下面是演示此方法的示例查询:
select MyColumn from MyTable order by case IsNumeric(MyColumn) when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn else MyColumn end
在此查询中,IsNumeric 函数用于确定值是否为数字。如果是,则 Replicate 函数会添加前导零以将字符串填充到固定长度(本例中为 100)。否则,该值将保持不变。
通过此表达式排序,数字值将被填充并按数字顺序排序,而非数字值将按字母顺序排序。这确保了所需的排序顺序,如原始问题中的示例所示:
1 2 10 A B B1
以上是如何在 SQL Server 中对具有混合数字和字母值的 VARCHAR 列进行数字排序?的详细内容。更多信息请关注PHP中文网其他相关文章!