Sql Oracle-将VARCHAR2字段像数字一样排序-我找到了一个解决方案,需要解释一下吗
我有一个VARCHAR2列,我想对它进行数字排序。99%(甚至可能是100%)的时间它将包含数字。我环顾四周,发现了。引述资料来源: 请记住,我们的目标是按升序(基于其属性)对supplier_id字段进行排序 数值)。要做到这一点,请尝试使用 LPAD函数 比如说, 按从供应商订单中选择* lpad(供应商id,10) 这个SQL填充了 供应商id字段,最大空格为10 人物。现在,您的结果应该 按升序数字排序 秩序Sql Oracle-将VARCHAR2字段像数字一样排序-我找到了一个解决方案,需要解释一下吗,sql,oracle,sql-order-by,Sql,Oracle,Sql Order By,我有一个VARCHAR2列,我想对它进行数字排序。99%(甚至可能是100%)的时间它将包含数字。我环顾四周,发现了。引述资料来源: 请记住,我们的目标是按升序(基于其属性)对supplier_id字段进行排序 数值)。要做到这一点,请尝试使用 LPAD函数 比如说, 按从供应商订单中选择* lpad(供应商id,10) 这个SQL填充了 供应商id字段,最大空格为10 人物。现在,您的结果应该 按升序数字排序 秩序 我对这个解决方案做了一点研究,它似乎是有效的(到目前为止),但是有人能解释一下
我对这个解决方案做了一点研究,它似乎是有效的(到目前为止),但是有人能解释一下它是如何工作的吗?对字符串/varchar进行排序时,字段总是从左到右插入,就像对普通单词进行排序一样 这就是排序时出现问题的原因
1
2
3
10
11
20
这将被归类为
1
10
11
2
20
3
但是,现在如果你把这些值放在左边,你会得到
001
002
003
010
011
020
这将正确排序从技术上讲,它将字段排序为整数,而不是数字。如果你有十进制数,那就不行了。