【问题标题】:What are NLS Strings in Oracle SQL?Oracle SQL 中的 NLS 字符串是什么?
【发布时间】:2015-06-19 11:27:25
【问题描述】:

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

【问题讨论】:

  • nvarchar2 和 nchar 允许您以 NLS_NCHAR_CHARACTERSET 定义的字符集存储数据

标签: sql database oracle


【解决方案1】:

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

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

因为可以将默认字符集配置为不支持全范围 Unicode 字符的字符集(例如 Windows 1252),这就是 Oracle 提供此 alternate 字符集配置的原因同样, 保证支持 Unicode。

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

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

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

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

您可以找到关于主题here的更完整信息。

【讨论】:

  • 在我看来,现在我们有了 Unicode,没有理由再在您的 Oracle 数据库中使用国家字符集(即NVARCHAR2CHARNCLOB)。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    您还有NLS_DATE_FORMATNLS_CURRENCYNLS_CALENDARNLS_LANGUAGE等参数。

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

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多