在oracle中一个字符特别是中文占几个字节是不同的。
比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4))
错!最多能插入一个汉字加一个字母(或数字)。
你说b列最多能插入多少个汉字,2个?
不以N开头的字段类型(比如CHAR,VARCHAR2)中,unicode字符(比如汉字)占3个字节,其他字符占1个字节。
如何求一个字符串占用的字符数和字节数?
你说 中华12 这个字符串占用了多少字符,字节?看sql返回值便清楚了。
select lengthb('中华12') from dual --返回8,也就是占用8个字节,其中中华儿子各占3个字节,而12两个字符各占一个字节
select length(N'中华1') from dual --返回3,因为只有3个字符嘛。
字符串类型字段默认的长度是以字节为单位的,具体取决于参数
nls_length_semantics 的值(使用show
parameters可以看到这个参数的值),默认是BYTE,也就是以字节为单位的,如果是CHAR则是以字符为单位的。表的某列可以使用字符为单位
吗?当然可以,比如这样创建即可:create table test_ly(a varchar2(4 char))
这样a列就最多能保存4个字符,而不是4个字节了。
分享到:
相关推荐
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
在 Oracle 中,CHAR 类型区分中英文,中文占两个字节,而英文占一个字节。因此,CHAR(20) 可以存储 20 个英文字符或 10 个中文字符。CHAR 类型适用于长度比较固定的,一般不含中文的情况。 二、VARCHAR 类型 ...
#### 一、Oracle字符集概述 在Oracle环境中,字符集用于定义如何表示和存储字符数据。一个完整的字符集由语言(Language)、地区(Territory)和编码(Charset)三部分组成。例如,`NLS_LANG=AMERICAN_AMERICA.ZHS...
- **单字节字符集(Single Byte Character Set, SBCS)**:每个字符由一个字节表示。 - **多字节字符集(Multi Byte Character Set, MBSCS)**:每个字符由多个字节表示。 - **Unicode字符集**:使用统一的编码标准来...
在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$SESSION`时。该错误的出现意味着在查询结果中存在一些多字节字符(通常是...
创建一个OracleCommand对象,并通过参数化方式将Byte[]数组作为参数传递给存储过程。 ```csharp OracleCommand cmd = new OracleCommand(); cmd.Parameters.Add(new OracleParameter("xxxx", bt)); ``` #### 2. ...
Oracle 字符集是一个字节数据的解释的符号集合,具有大小之分,具有相互的包容关系。Oracle 支持国家语言的体系结构允许使用本地化语言来存储、处理、检索数据。 一、什么是 Oracle 字符集 Oracle 字符集是一个...
Oracle 字符集是数据库系统中一个至关重要的概念,它决定了数据如何被编码、存储和解析。Oracle 支持多种字符集,以满足不同地区和语言的需求。本文将深入探讨 Oracle 字符集的查看、修改以及相关知识。 首先,...
Oracle字符集专题是一个深入探讨Oracle数据库字符集配置、管理和常见问题解决的综合资源。这个专题涵盖了从基础概念到实际操作的多个方面,旨在帮助用户全面理解并有效处理与Oracle字符集相关的各种问题。 首先,...
在 ORACLE 数据库中,汉字占用的字节数是一个常见的问题。根据数据库的字符集编码,一个汉字可以占用不同的字节数。在 AL32UTF8 或 UTF8 编码下,一个汉字通常占用 3 到 4 个字节,而在 ZHS16GBK 编码下,一个汉字...
在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 Oracle 数据库获取的数据出现乱码现象。这种情况通常发生在远程 Oracle 数据库与本地 Oracle 数据库的字符集...
例如,一个汉字在单字节字符集(如US7ASCII)中占用2个字节,而在多字节字符集(如ZHS16GBK)中只占用1个字节。 - **客户端字符集**:决定了从数据库检索出的数据在客户端的应用程序中的显示形式。服务端和客户端...
- `ASCII(char)`: 获取`char`中第一个字符的ASCII值。 - `CHAR(number)`: 根据给定的ASCII值`number`返回相应的字符。 - `REPLACE(char,str1,str2)`: 将`char`中所有的`str1`替换为`str2`。 - `INSTR(char1,char...
Oracle数据库支持多种字符集,包括单字节字符集(如ASCII)和多字节字符集(如UTF-8)。正确的字符集选择对于避免乱码、提高数据完整性以及优化性能具有重要意义。 ### 修改Oracle数据库字符集的原因及挑战 #### ...
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
- UTF-8 是一种变长多字节编码,可以用 1、2 或 3 个字节表示一个 Unicode 字符。 **3.4 字符集超级** 当一种字符集 A 的编码数值包含所有另一种字符集 B 的编码数值,并且两种字符集相同编码数值代表相同的字符...