Varchar 字符集=utf8 与 nvarchar

Varchar charset=utf8 vs nvarchar

我遇到过很多 nvarcharvarchar 的比较,它通常总是提到 unicode 与非 unicode 问题。但是,在 varchar 列使用 unicode charset/collation 的情况下,例如:

CREATE TABLE `t` 
(
    `title` varchar(200) DEFAULT NULL,
    `studio` varchar(40) DEFAULT NULL,
    `currency` varchar(3) DEFAULT NULL,
) DEFAULT CHARSET=utf8;

nvarcharvarchar是同一个意思,还是有区别? Mysql 或 Postgres 没有这种类型,所以我假设当 varchar 是 unicode?

时它们会变成相同的东西

既然你标记了“甲骨文”,我就可以给出一个声明。

在 Oracle 中,您有两个字符集,字符集(用于 VARCHAR2 等)和国家字符集(用于 NVARCHAR2 等)

它们的存在主要是由于历史原因。在早期,字符集(例如 US7ASCII)用于通用数据,例如 PL/SQL 代码或元数据,而国家字符集(例如 WE8ISO8859P1 用于西欧)用于语言特定数据.

现在默认的字符集是AL32UTF8,即涵盖整个Unicode的UTF-8。实际上,我认为今天没有理由使用国家字符集。越来越多的新原生 Oracle 函数不支持 NVARCHAR2 数据类型,所以今天你真的应该避免数据类型 NVARCHAR2NCLOB