con*_*att 5 sql oracle sql-order-by
我有一个VARCHAR2列,我想用数字排序.它将包含数字的99%(或甚至100%)的时间.我环顾四周,发现了这个解决方案.引用来源:
请记住,我们的目标是按升序对supplier_id字段进行排序(基于其数值).为此,请尝试使用LPAD函数.
例如,
通过lpad(supplier_id,10)从供应商订单中选择*;
此SQL填充supplier_id字段的前面,空格最多为10个字符.现在,您的结果应按升序排序.
我用这个解决方案玩了一下,它似乎是workign(到目前为止),但它是如何工作的,任何人都能解释一下吗?
排序字符串/ varchar时,字段始终从左到右设置,就像您对普通单词进行排序一样.
这就是排序时遇到问题的原因
1
2
3
10
11
20
Run Code Online (Sandbox Code Playgroud)
将被分类为
1
10
11
2
20
3
Run Code Online (Sandbox Code Playgroud)
但是,现在如果你填充左边的值,你会有类似的东西
001
002
003
010
011
020
Run Code Online (Sandbox Code Playgroud)
哪个会正确排序
归档时间: |
|
查看次数: |
5467 次 |
最近记录: |