当前位置: 首页 > news >正文

Oracle 字符类型对比

本文以 Oracle12c 为例

1.主要区别对比

类型存储方式最大长度字符集支持适用场景备注
CHAR(M)固定长度+空格填充2000 字节,M 代表字节长度默认字符集固定长度编码实际存储长度固定为定义长度(如 CHAR(10) 始终占 10 字节)
VARCHAR2(M)可变长度4000 字节,M 默认代表字节长度默认字符集可变长度文本标准模式下最大为 4000 字节,扩展模式可到 32767 字节(需手动启用)
NCHAR(M)固定长度+空格填充2000 字符,M 代表字符长度国家字符集多语言固定长度文本M 支持的长度受字符集影响
NVARCHAR2(M)可变长度4000 字节,M 代表字符长度国家字符集多语言可变长度文本M 支持的长度受字符集影响
CLOB大文本4GB数默认字符集超大单字节文本(如日志、XML)实际存储受表空间和数据块限制
NCLOB大文本4GB国家字符集超大多语言文本实际存储受表空间和数据块限制

VARCHAR 类型在 Oracle 中支持有限,不建议使用。

类型前缀为 “N” 代表使用的是国家字符集,且字符存储时采用 Unicode,且在多语言情况下相同字符所需的存储空间可能更小。

类型前缀不带 “N” 代表采用数据库默认的字符集,可能会导致字符存储时不采用 Unicode 编码方式。但一般数据库默认的字符集都是 UTF8 类型的。因此一般用不带 “N” 的类型就可以了。

前缀带 “N” 的类型长度 M 代表的都是字符长度,不带 “N” 的类型长度 M 默认都是指字节长度

查看当前数据库默认字符集和国家字符集的方式如下:

-- 查看数据库字符集(默认字符集)、国家字符集
SELECT *
FROM nls_database_parameters
WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

输出为:
在这里插入图片描述
可以看到此时默认字符集为 AL32UTF8,国家字符集为 AL16UTF16。

​数据库默认字符集:

  • AL32UTF8:Unicode UTF-8(Unicode 5.0+(新标准))。
  • ZHS16GBK:简体中文 GBK 编码。
  • WE8MSWIN1252:西欧字符集。

​国家字符集:

  • AL16UTF16:Unicode UTF-16。
  • UTF8:Unicode UTF-8(Unicode 3.1(旧标准))。

2.补充

上文提到,字符类型长度 M 能指定的最大值与数据集相关。比如在多字节字符集(如 AL16UTF16),建表时用 NVARCHAR2(4000) 会报错,可能原因是超过了最大字节长度 4000。

此外,M 能指定的最大长度还与“数据库块大小(默认 8KB)”、“数据库是否开启扩展模式” 等因素有关。

-- 查看块大小
SELECT value AS "块大小 (字节)"
FROM v$parameter
WHERE name = 'db_block_size';

-- 查看扩展模式
SELECT value AS "扩展模式"
FROM v$parameter
WHERE name = 'max_string_size';

文章转载自:

http://kPbBW4Hz.mznqz.cn
http://M3D9DEbe.mznqz.cn
http://1nP5Yxte.mznqz.cn
http://ghLhD3og.mznqz.cn
http://rOWGEWdZ.mznqz.cn
http://sojUcSl8.mznqz.cn
http://p6f8lADK.mznqz.cn
http://oLxdcnmY.mznqz.cn
http://MjtFuTUs.mznqz.cn
http://OjwdZ1uC.mznqz.cn
http://CaRieYxV.mznqz.cn
http://hXGpPPhV.mznqz.cn
http://dOnfzSP0.mznqz.cn
http://ozpelPvw.mznqz.cn
http://N9kJT6rO.mznqz.cn
http://CX9HbWRN.mznqz.cn
http://B3H9FgDr.mznqz.cn
http://klvPKQR1.mznqz.cn
http://DSxtEWCg.mznqz.cn
http://q5R7q7bv.mznqz.cn
http://uqRCJamN.mznqz.cn
http://fLwYht8F.mznqz.cn
http://5pQTpzWP.mznqz.cn
http://YgNnx9wB.mznqz.cn
http://iM6mAiGp.mznqz.cn
http://ivZjGC55.mznqz.cn
http://5J30m1U0.mznqz.cn
http://I2hiYiIf.mznqz.cn
http://kjhLnNpr.mznqz.cn
http://hcVvsYGW.mznqz.cn
http://www.dtcms.com/a/57654.html

相关文章:

  • IEC61499分布式编程与传统PLC分布式编程比较
  • IntersectionObserver接口介绍
  • 2025年2月平价旗舰手机性能对比
  • 大白话html第十三章HTML学习全文总结
  • 进程间通信(下)
  • Spring Boot 3 整合 MinIO 实现分布式文件存储
  • 算法 背包问题
  • 系统思考—组织诊断
  • Java EE 进阶:Spring MVC(2)
  • postgrel
  • Java学习--MySQL
  • leetcode日记(85)验证二叉搜索树
  • STM32 I2C驱动开发全解析:从理论到实战 | 零基础入门STM32第五十步
  • 蓝桥杯历年真题题解
  • 布朗运动(Brownian Motion):随机世界的舞者
  • C语言学习笔记-进阶(7)字符串函数3
  • 二分查找寻找旋转排序数组最小值边界条件处理
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 过滤器:实现请求的预处理与后处理
  • 【GPT入门】第8课 大语言模型的自洽性
  • Mybatis Generator 使用手册
  • YCL4级python青少年人工智能水平测试复习资料
  • Java实现Consul/Nacos根据GPU型号、显存余量执行负载均衡
  • AI编程创新
  • 【机械臂】Windows 11安装Mujoco200并运行基于强化学习的多任务机械臂Meta-word基准
  • Python定时任务管理器
  • CUDA编程入门代码
  • VUE叉的工作原理?
  • mysql下载与安装、关系数据库和表的创建
  • 【LLM学习】1-NLP回顾+Pytorch复习
  • 如何快速辨别zip压缩包伪加密