数据库中对于存储汉字和各种符号的字段应该定义为什么类型?

数据库中对于存储汉字和各种符号的字段应该定义为什么类型?,第1张

需要定义成字符型,一般可用char、varchar、nchar、nvarchar等,具体需要看实际需求。

这几种类型的比较:

CHAR

CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。

VARCHAR

存储变长数据,但存储效率没有CHAR高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。

从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

NCHAR、NVARCHAR

这两种从名字上看比前面三种多了个"N"。和char、varchar比较起来,nchar、nvarchar最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar

问题一:在数据库中,汉字属于什么字符类型 如果名字都用汉字就使用nvarchar 如果包括英文就varchar

具体区别打开sqlserver f1 输入数据类型看看

问题二:java中汉字是String类型的么? 字符串里的字符不管哪国文字。在java中内码一概以unicode编码。

哪有什么强制型转换的问题啊。

类型转换的前提是数据类型不一致。

String就是String。哪还需要转换呢?

问题三:什么是字符型 选符型 字符型都要用引号 例如: 123 姓名abc之类的都是 数值型就是1234之类的这些数 逻辑型分为逻辑真和逻辑假 日期型就是[^09-01-02]这样表示时间的

问题四:汉子是什么类型的文字,依据是什么 1.从汉字记录的语言结合系统中的单位看,汉字是语素文字.

根据一种语言的文字符号所记录的语言结构系统中的单位来看,记录语素的是语素文字,记录音节的是音节文字,记录音素的是音素文字.汉字记录的是汉语里的什么单位呢?汉字主要记录汉语里的语素.例如“学习”这个词,写下来是两个字,这两个字代表了汉语里两个最小的音义结合体,即语素.由于汉字记录语素,代表语素,汉字也就有了所谓“字义”,显然,这字义是语素义.汉字代表语素是汉字区别于表音文字――音节文字、音素文字的一个重要特点.表音文字所记录的不是语素,而是纯粹的语音单位.例如记录英语的拉丁字母,除有形有音外,它不表义,它只代表音素,作为记录英语的文字符号,它仅仅是表示一定语音的字母.

汉字也记录少量非语素的音节,如“葡”“萄”“枇”“杷”等.这些音只有pú táo pí pā等语音,而不独立表义.但汉字所记的这类音节,并不同于音节文字中的文字符号.因为音节文字中的文字符号是专门用来记录语言中的音节的,如日文的假名“夕”是记录音节的,而汉语中的这类音节仅仅是某个多音节语素中的具体音节,它们只有处在“葡萄”“枇杷”等多音节语素中,才具有代表音节的作用,否则就失去了存在的价值,而且字形上往往还有标义的成分,如“葡萄”二字所从的“艹”,“枇杷”二字所从的“木”,标志着“葡萄”“枇杷”的种概念范畴,这种情况是音节文字不可能有的.

从汉字跟汉语的关系看,汉字是语素文字.

2.从汉字所用的文字符号本身的性质看,汉字主要是由意符和音符组成的文字系统.

文字所使用的符号大致可分为三类,即意符、音符、记号.跟文字所代表的语素在意义上有联系的字符是意符,只在语音上有联系的字符是音符,在语音和意义上都没有联系的是记号.表音文字只使用音符,汉字则三类符号都使用.汉字里的象形字、指事字、会意字以及形声字中的形旁属于意符,因为它们跟它们所代表的语素在意义上有直接联系.汉字里的音符指形声字中的声旁.虽然汉字和表音文字都使用音符,但汉字的音符同表音文字的音符有很大区别.表音文字的音符是专职的,汉字的音符是借现成汉字充当的,属借音符性质.在汉字发展的过程中,象形字大多变得不象形了.

问题五:字母是什么类型的数据类型? char类型

问题六:什么是字符型变量 字符型变量是用来保存单字符的一种变量:如:char a='a'而字符串就是用来保佑多个字符的变量,C语言中用字符数组来表式一个字符串 如:char name[]={abcdefghikllllll}。字符和字符串的区别在于是用双引号,还是单引号,双引号表字符串,单引号表字符,如:a和'a' 第一个是字符串,而第二个是字符。

问题七:oracle几种字符类型总结 一 varchar,nvarchar,

四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样, 与上面区别在于是根据Unicode 标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。

1.char

char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;

char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。

char适用于长度比较固定的,一般不含中文的情况

2.varchar/varchar2

varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。

varchar同样区分中英文,这点同char。

varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串

varchar/varchar2适用于长度不固定的,一般不含中文的情况

3.nvarchar/nvarchar2

nvarchar和nvarchar2是长度不固定的

nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数

nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节

nvarchar/nvarchar2适用于存放中文

char [ ( n ) ]

固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。

varchar [ ( n | max ) ]

可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节,用于反映存储的数据的长度。所输入数据的长度可以为 0 个字符。

* 如果列数据项的大小一致,则使用 char。

* 如果列数据项的大小差异相当大,则使用 varchar。

* 如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。

如果未在数据定义或变量声明语句中char 或 varchar 数据类型指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时char 或 varchar 数据类型未指定 n,则默认长度为 30。

当执行 CREATE TABLE 或 ALTER TABLE 时,如果 SET ANSI_PADDING 为 OFF,则定义为 NULL 的 char 列将作为 varchar 处理。

另外帮助理解的,只供参考:转自51testing/...141197

也可参......>>

问题八:mysql中汉字甚至什么数据类型合适? 10分 这些都是真实的数据库

访问桌面数据库,这是一个小型的数据库,主要用于办公使用一个免费的,开源的MySQL 属于中型数据库

DB2数据库也是一个中型数据库

Oracle是一个庞大的数据库

除了访问,到MySQL,DB2,Oracle可以实现跨平台。

微软的数据库是不是跨平台,包括SQL Server2000中和SQL Server2005中

问题九:怎么对一个字符串一个一个字符的进行判断是什么类型的字符 循环读取每一个字符,再进行条件判断,分为大写英文字母、小写字母、数字、其他字符,分别输出upper letter、lower letter、digit、other character。把源程序复制一下

#include#include#includeint main(){char ch[100]int iint lengthprintf(please input a string:\n)scanf(%s,ch)length=strlen(ch)printf(the length is %d\n,length)for(i=0i='A'){printf(the %d character is upper letter\n,i+1)}else{if(ch[i]='a'){printf(the %d character is lower letter\n,i+1)}else{if(ch[i]='0'){printf(the %d character is digit\n,i+1)}else{printf(the %d character is other character\n,i+1)}}}}return 0}运行结果,如果有什么不明白的还可以问我

问题十:汉字字符 的标准码数值范围是多少?就是例如 char '我' 按照%d 形式输出的值 所有汉字这 汉字字符 的标准码数值范围是多少?

汉字内码,是两个字节。

char,这才一个字节。只能存放半个汉字。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9932380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存