【发布时间】:2014-07-23 10:55:09
【问题描述】:
我正在研究数据库访问层,刚刚注意到 Oracle 11g 在处理别名中的非拉丁字符时似乎存在一些问题。
就 30 个字符的别名长度限制而言,别名中超过 0x7F 的字符似乎算作两个字符。
例如在 Oracle SQL Developer 和 ODP.net 中:
SELECT
LENGTH('ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ') "ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔ"
FROM DUAL
工作并报告字符串长度为 15,但是:
SELECT
LENGTH('ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔx') "ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔx"
FROM DUAL
报告 ORA-00972: 'identifier too long' 错误。
这似乎暗示别名字符串的编码方式意味着重音字符变成了两个字符。
这是预期的吗?有人知道这里的实际限制/编码是什么吗?
我需要一种可靠的方法来确定是否允许提供的别名字符串。
Oracle 设置的价值如下:
客户:
- NLS_LANG = ENGLISH_UNITED KINGDOM.WE8MSWIN1252
数据库:
- NLS_CHARACTERSET = AL32UTF8
- NLS_NCHAR_CHARACTERSET = AL16UTF16
【问题讨论】: