Oracle文本将无法与NVARCHAR2一起使用 还有什么不可用?
我们将迁移应用程序以支持Unicode,并且必须在整个数据库的unicode字符集或N [VAR] CHAR2中存储的unicode列之间进行选择。
我们知道,如果我们选择NVARCHAR2,我们将不再有可能使用Oracle Text索引列内容,因为Oracle Text只能基于CHAR类型对列进行索引。 此外,从Oracle的可能性收获可能会出现其他主要差异? 此外,在较新版本的Oracle中是否可能添加了一些新功能,但是仅支持CHAR列或NCHAR列,但不支持两者。 谢谢你的答案。 注意Justin的回答: 谢谢您的回答。我会讨论你的观点,适用于我们的案例: 我们的应用程序通常是在Oracle数据库上单独处理的 我们还使用SQL * Loader和SQL * Plus与数据库进行基本通信 我们也不知道我们的客户中的数据库管理员会 你的最后两点对我们的情况更有见地。我们不用很多 如果我们的应用程序(在Visual C下编译)使用wchar_t,我们也可以期待性能的破坏 >有很多第三方实用程序和库,根本不支持NCHAR / NVARCHAR2列,或者不能使NCHAR / NVARCHAR2列工作愉快。这是非常烦人的,例如,当您闪亮的新的报告工具无法报告您的NVARCHAR2数据。 Oracle设计了NCHAR / NVARCHAR2数据类型,用于尝试支持不支持使用Unicode的新应用程序在同一数据库中不支持Unicode的旧版应用程序的情况,以及有利于将某些Unicode数据存储在不同的情况下编码(即,您有大量的日语数据,您希望在NVARCHAR2而不是UTF-8编码中使用UTF-16编码存储)。如果你不是在这两种情况之一,而且听起来不像你,我将不惜一切代价避免NCHAR / NVARCHAR2。 回应你的跟进
你是什??么意思“照顾数据本身”?我希望你不是说你已经配置了你的应用程序来绕过Oracle的字符集转换例程,并且你自己完成所有的字符集转换。 我也假设你正在使用某种API /库访问数据库,即使是OCI。您是否查看了需要对应用程序进行哪些更改以支持NCHAR / NVARCHAR2以及您使用的API是否支持NCHAR / NVARCHAR2?您在C中获取Unicode数据的事实并不表示您不需要进行(潜在的重大)更改来支持NCHAR / NVARCHAR2列。
这些应用程序都使用NCHAR / NVARCHAR2。 NCHAR / NVARCHAR2在脚本中引入一些额外的复杂性,特别是如果您尝试编码在数据库字符集中无法表示的字符串常量。你一定可以解决问题。
虽然我确信您的客户可以找到使用数据的替代方法,但如果您的应用程序不能很好地利用企业报表工具或企业ETL工具或者他们遇到的任何桌面工具,很有可能客户会责怪你的应用程序,而不是他们的工具。这可能不会是一个节目停止,但也不会造成客户不必要的悲伤也没有好处。这可能不会促使他们使用竞争对手的产品,但不会让他们渴望拥抱您的产品。
我不知道你在说什么“转换”。这可能会回到我最初的问题,您是否表示您正在绕过Oracle的NLS层,以自己进行字符集转换。 我的底线是,我没有看到使用NCHAR / NVARCHAR2给出你正在描述的任何优势。使用它们有很多潜在的缺点。然而,即使您可以消除99%的缺点与您的特定需求无关,您仍然面临着两种方法之间的冲洗。鉴于此,我宁可采用最大化灵活性的方法,而将整个数据库转换为Unicode(推测为AL32UTF8),并将其用于此。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |