【问题标题】:ORDER BY function not working in OracleORDER BY 函数在 Oracle 中不起作用
【发布时间】:2012-11-29 04:55:16
【问题描述】:

我正在使用下面的 ORDER BY 函数按客户 ID 订购一个简单的查询(它最初是派对年龄,但似乎不起作用,所以我更改了它以查看它是否是语法) .

SELECT   customer_id, customer_name, party_age
FROM     customer
ORDER BY customer_id

报告没有返回错误,但是当我去查看报告时,它根本没有排序。我也尝试过使用数字(ORDER BY x)。

有人指导我正确的方向吗?

编辑:Customer_id 是 VARCHAR2(3),有 10 个样本数据字段,范围从 001 到 010。我尝试按照下面的建议转换为 int,但结果仍然相同。

【问题讨论】:

  • ORDER BY function not working in Oracle -- 你知道,这是一个很好的声明。
  • 你能提供示例数据吗?
  • 你能用这个查询的结果编辑你的问题吗:select value from v$nls_parameters where parameter = 'NLS_SORT';
  • 请提供样品。 customer_id 的数据类型是什么?是不是真的只包含数字的varchar2(如果是order by to_number(customer_id)
  • @Ben 该查询的结果是返回的二进制值。

标签: sql oracle sorting sql-order-by


【解决方案1】:

Order by 在 Oracle 中工作。问题一定是你得到的结果与你期望的不同。

造成这种情况的一个典型原因是表示为字符串的数字。这会将事物排序为 1, 10, 100, 101, 102 。 . .如果您期望数字排序,这看起来不正确。

我的猜测是以下方法会起作用:

 order by cast(customer_id as int)

【讨论】:

  • 我明白你的意思,但1, 10, 100, 101, 102 . . . 的排序看起来是正确的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多