什么是 Oracle SQL 中的 NLS 字符串


Oracle

SQL中的NLS字符串是什么,它显示为char和nchar以及varchar2和nvarchar2数据类型之间的差异?谢谢

每个 Oracle 数据库实例都有 2 个可用的字符集配置:

  1. 默认字符集(由 char、varchar2、clob 等类型使用)
  2. 国家字符集(由 nchar、nvarchar2、nclob 等类型使用)

由于默认字符集可以配置为不支持所有 Unicode 字符(例如 Windows 1252)的字符集,因此 Oracle 也提供了此备用字符集配置,该配置保证支持 Unicode。

因此,假设您的数据库使用 Windows-1252 作为其默认字符集(不是我推荐它),并使用 UTF-8 作为国家(或备用)字符集......

然后,如果你有一个不需要支持各种奇怪的 unicode 字符的表列,那么如果你愿意,你可以使用 varchar2 这样的类型。 通过这样做,您可能会节省一些空间。

但是,如果您确实需要存储和支持 unicode 字符,那么对于该非常特定的实例,您的列应定义为 nvarchar2 或使用国家/地区字符集的其他类型。

也就是说,如果数据库的默认字符集已经是支持 Unicode 的字符集,那么使用 nchar、nvarchar2 等类型并不是真正必要的。

您可以在此处找到有关该主题的更完整信息。

AFAIK,NLS代表支持本地语言的National Language Support(换句话说,支持本地化)。来自甲骨文文档

本地语言支持 (NLS) 是一项支持 Oracle 的技术 以用户的母语与用户交互的应用程序,使用 它们用于显示数据的约定

当您谈论"NLS"设置时,它不限于数据库的字符集配置。

你也有参数,如NLS_DATE_FORMATNLS_CURRENCYNLS_CALENDARNLS_LANGUAGE等。

其中大多数您可以在会话级别设置,即为每个用户单独设置。

最新更新