【发布时间】:2015-06-19 11:27:25
【问题描述】:
什么是 Oracle SQL 中的 NLS 字符串,它显示为 char 和 nchar 以及 varchar2 和 nvarchar2 数据类型之间的区别?谢谢
【问题讨论】:
-
nvarchar2 和 nchar 允许您以 NLS_NCHAR_CHARACTERSET 定义的字符集存储数据
什么是 Oracle SQL 中的 NLS 字符串,它显示为 char 和 nchar 以及 varchar2 和 nvarchar2 数据类型之间的区别?谢谢
【问题讨论】:
每个 Oracle 数据库实例都有 2 个可用的字符集配置:
因为可以将默认字符集配置为不支持全范围 Unicode 字符的字符集(例如 Windows 1252),这就是 Oracle 提供此 alternate 字符集配置的原因同样, 保证支持 Unicode。
假设您的数据库使用 Windows-1252 作为其默认字符集(不是我推荐的),使用 UTF-8 作为国家(或备用)字符集...
那么如果你有一个表格列不需要支持各种奇怪的 unicode 字符,那么你可以根据需要使用 varchar2 之类的类型。通过这样做,您可能会节省一些空间。
但是,如果您确实需要存储和支持 unicode 字符,那么对于该非常具体的实例,您的列应定义为 nvarchar2 或其他使用国家字符集的类型。
也就是说,如果您的数据库的默认字符集已经是支持 Unicode 的字符集,那么使用 nchar、nvarchar2 等类型并不是真正必要的。
您可以找到关于主题here的更完整信息。
【讨论】:
NVARCHAR2、CHAR、NCLOB)。
AFAIK,NLS 代表支持本地语言的National Language Support(换句话说,支持本地化)。来自Oracle Documentation
国家语言支持 (NLS) 是一项支持 Oracle 的技术 应用程序以用户的母语与用户交互,使用 他们显示数据的约定
【讨论】:
当您谈论“NLS”设置时,它不仅限于数据库的字符集配置。
您还有NLS_DATE_FORMAT、NLS_CURRENCY、NLS_CALENDAR、NLS_LANGUAGE等参数。
您可以在会话级别设置其中的大多数,即为每个用户单独设置。
【讨论】: