[转帖]Oracle中为什么需要NCHAR
https://zhuanlan.zhihu.com/p/668402759
Oracle中已经有了char、varchar2等字符类型,为什么又弄出一个nchar、nvarchar2?
Oracle数据库中有两个字符集编码,创建数据库时可以显示指定
- 数据库字符集编码
- 国家字符集编码
--查看当前数据库字符集和国家字符集
select * from nls_database_parameters where parameter='NLS_CHARACTERSET' OR parameter='NLS_NCHAR_CHARACTERSET';
PARAMETER VALUE
NLS_NCHAR_CHARACTERSET AL16UTF16 --国家字符编码为AL16UTF16
NLS_CHARACTERSET AL32UTF8 --数据库字符编码为AL32UTF8
char、varcahr2、clob这几个类型字段存储的字符串编码类型为当前数据库字符编码,由于Oracle支持很多不同国家不同语言的字符编码,除unicode支持的几种字符编码(AL32UTF8/AL16UTF16等)外,大部分字符编码并不能表示世界上所有的字符。这就会出现一个问题,在一个数据库编码为非unicode的数据库中,如果想存储当前数据库编码不支持的字符,那是没法做到的。基于此情况出现了下面的nchar。
nchar、nvarchar2、nclob这几个类型字段存储的字符串的字符编码为国家字符集编码,且只能为unicode的AL16UTF16(默认及推荐)或者UTF-8(已弃用),由于unicode编码包含了世界所有字符,这就解决了在一个数据库编码为非unicode的数据库中,如果想存储当前数据库编码不支持的字符;
此外,由于数据库字符编码(默认AL32UTF8)和国家字符编码(AL16UTF16)不同导致的存储空间占用不同的问题,也是引入国家字符集编码的原因,AL32UTF8字符宽度为1~4字节,其中欧洲字符和中东等字符占1~2个字节,亚洲字符大部分占用3个字节,补充字符占用4个字节。而AL16UTF16字符宽度为2或4字节,其中欧洲字符、中东字符、亚洲等字符大部分都占用2个字节,补充字符占用4个字节,所以具体业务中字符类型来确定使用那种类型。
[转帖]Oracle中为什么需要NCHAR的更多相关文章
- [转帖]【Oracle】详解Oracle中NLS_LANG变量的使用
[Oracle]详解Oracle中NLS_LANG变量的使用 https://www.cnblogs.com/HDK2016/p/6880560.html NLS_LANG=LANGUAGE_TERR ...
- Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述
--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个 ...
- 在Oracle中使用Entity Framework 6 CodeFirst
项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework ...
- oracle中imp命令详解 .
转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...
- 将SQLServer2005中的数据同步到Oracle中
有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据.不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现. ...
- sqlserver和oracle中对全半角的转换
oracle中对全半角的转换 to_single_byte(c)转换成半角 to_multi_byte(c)转换成全角 SELECT To_single_byte('881898?71') FROM ...
- oracle中imp命令具体解释
oracle中imp命令具体解释 Oracle的导入有用程序(Import utility)同意从数据库提取数据,而且将数据写入操作系统文件.imp使用的基本格式:imp[username[/pass ...
- Oracle中对列加密的方法
Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...
- Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
Oracle中如何导出存储过程.函数.包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? QQ群里有人问:如何导出一个用户下的存储过程? 麦苗答:方法有多种,可以使用DBMS_MET ...
随机推荐
- Jenkins 系列:Jenkins 安装(Windows、Mac、Centos)和简介
目录 简介 发展历史 应用场景 Jenkins 安装部署 先决条件 硬件要求 软件包下载 war 包部署 linux 系统部署 mac 系统部署 windows 系统部署 安装后基本配置 解锁 自定义 ...
- 前端 Git 使用约定
前端 Git 使用约定 背景 开发前端项目,有以下困惑: 使用哪个分支开发,哪个分支发布 修复线上bug的流程是什么,如何避免修复完了下次却又出现了 cms分支有十多个,是否都有用 如何快速找到之前某 ...
- VSFTPD2.3.4(笑脸漏洞)复现
vsftpd2.3.4笑脸漏洞复现 目标服务器:metasploitable2(192.168.171.11) 渗透机:Kali(192.168.171.21) 方法一:手动复现 首先用kali扫描一 ...
- ActiveMQ RCE CVE-2023-46604分析
一.漏洞触发点 org.apache.activemq.openwire.v12包下BaseDataStreamMarshaller类的createThrowable方法. package org.a ...
- 神经网络基础篇:向量化(Vectorization)
向量化 向量化是非常基础的去除代码中for循环的艺术,在深度学习安全领域.深度学习实践中,会经常发现自己训练大数据集,因为深度学习算法处理大数据集效果很棒,所以的代码运行速度非常重要,否则如果在大数据 ...
- 技术实践丨PostgreSQL开启Huge Page场景分析
PostgreSQL用户经常发现,服务端在连接数较大的情况下,会出现系统内存消耗过多的情况,严重者可能会造成OOM.但是服务端配置的共享内存(shared_buffers,wal_buffers等)是 ...
- 看图学NumPy:掌握n维数组基础知识点,看这一篇就够了
摘要:NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.国外有位程序员讲NumPy的基本运算以图解的方式写下来,让学习过程变得轻松有趣. NumPy是Python的最重 ...
- 从零开始学习python | 实例讲解如何制作Python模式程序
摘要:在本文中,我们将学习python中的各种模式程序. Python编程语言很容易学习.易于语法实现的各种库使其脱颖而出,这是它成为本世纪最流行的编程语言的众多原因之一.虽然学习很容易,但访问员通常 ...
- JS的深浅复制,原来如此!
摘要:之所以会出现深浅拷贝的问题,实质上是由于JS对基本类型和引用类型的处理不同. 本文分享自华为云社区<js的深浅复制,一看就明白>,作者: 鑫2020. 浅复制的意思 浅复制是仅仅对数 ...
- 在距离distribution 证书过期一个月(或被手动revoke了)的时候会受到apple的邮件
编辑 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只要你的每年99$的开发者membership没有过期,就不会对已 ...