【发布时间】:2022-06-10 17:36:03
【问题描述】:
SELECT *
FROM nls_database_parameters
WHERE PARAMETER IN('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
输出:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8
创建表:
CREATE TABLE char_demo
(
a CHAR(1 CHAR),
b NCHAR(1)
);
INSERT INTO char_demo (a, b)
VALUES ('a', 'a'); -- Ok
INSERT INTO char_demo (a, b)
VALUES('????', 'b'); -- Ok
INSERT INTO char_demo (a, b)
VALUES('????', '????'); -- **Bad**
ORA-12899:“CHAR_DEMO”列的值太大。“B”(实际:2,最大值:1)
为什么? char和nchar有什么区别?
【问题讨论】: