【发布时间】:2016-12-23 23:11:10
【问题描述】:
我有一个表格,其中有一些数字记录,例如:
NET_SALES
0
0
318
1'200
10'720
12'812
-1'285
13'682
40'713
-4'170
...
我用过:
TO_CHAR(Numeric field, 'NLS_NUMERIC_CHARACTERS = ''.''''')
但是,当我对字段进行排序时,它不会以正确的方式对其进行排序,因为首先它应该显示负数,然后是 0,然后是正数。我知道问题是因为现在该字段是字符,但我想用撇号分隔并以正确的方式对其进行排序。
我尝试再次将其转换为 TO_NUMBER,但撇号消失了...
有没有办法对它们进行排序?
非常感谢!
【问题讨论】:
-
SELECT TO_CHAR... ORDER BY TO_NUMBER...?
-
什么是列数据类型?这个问题暗示它是一个数字,在这种情况下你只需
order by numeric_field;如果它是一个字符串(a)为什么和(b)为什么使用to_char()? -
@Alex Poole,列数据类型是数字,我转换为字符串以格式化数字,添加撇号以分隔千位。
-
@jarlh 问题是我将查询传递给 .NET 上的 datagridview 并且 datagridview 对单击标题的列进行排序。
-
@AlonsoGonzálezNestal - 那么这与查询无关。您将其呈现为字符串,因此您的 datagridview 只能将其解释为字符串。为什么不将其检索为数字并使用 datagridview 对其进行格式化,而不是将其检索为字符串? (或者,按查询中的数字排序,然后……不要点击标题?)
标签: sql string oracle sorting numeric