【发布时间】:2020-05-11 20:57:14
【问题描述】:
在 sqlplus 中,此查询有效:
SQL> SELECT DISTINCT
2 CNTPTY_TYPE
3 FROM visn_exp.V_IHCVSN_CERT_DEP
4 WHERE as_of_dt = '08-may-20'
5 ;
CNTPTY_TYPE
----------------------------------------
Retail
PSE
Non-Financial Corporate
FI
但是这个失败了,带有 collate 子句:
SQL> SELECT DISTINCT
2 CNTPTY_TYPE COLLATE latin1_general_CI_AI AS CNTPTY_TYPE
3 FROM VISN_EXP.V_IHCVSN_CERT_DEP
4 WHERE as_of_dt = '08-may-20'
5 ;
CNTPTY_TYPE COLLATE latin_general_CI_AI AS CNTPTY_TYPE
*
ERROR at line 2:
ORA-00923: FROM keyword not found where expected
我应该怎么做才能解决这个问题?
更新:在答案中尝试了建议的查询。得到了
SQL*Plus:2020 年 5 月 11 日星期一 21:03:20 发布 12.2.0.1.0 生产版
版权所有 (c) 1982、2017、甲骨文。保留所有权利。
输入密码: 上次成功登录时间:Mon May 11 2020 16:51:34 -04:00
连接到: Oracle Database 12c 企业版 12.1.0.2.0 - 64 位生产 具有分区、真实应用集群、自动存储管理、OLAP、 高级分析和实际应用测试选项
SQL> SELECT DISTINCT
2 CNTPTY_TYPE COLLATE LATIN_AI AS CNTPTY_TYPE
3 FROM VISN_EXP.V_IHCVSN_CERT_DEP
4 WHERE as_of_dt = '08-may-20';
CNTPTY_TYPE COLLATE LATIN_AI AS CNTPTY_TYPE
*
ERROR at line 2:
ORA-00923: FROM keyword not found where expected
【问题讨论】:
-
我必须承认我无法在 Oracle 中找到支持的排序规则列表,但不是
latin1_general_CI_AI而不是latin_general_CI_AI? -
这也失败了,(更正了OP)
-
什么版本的Oracle?
-
我收到 ORA-12746:Oracle 18c 中无法识别的排序规则名称“LATIN1_GENERAL_CI_AI”。 Oracle 似乎不知道
latin1_general。它必须是_CI或_AI,而不是两者。这对我有用:COLLATE latin_AI。演示:dbfiddle.uk/…