社区
MS-SQL Server
帖子详情
请教:varchar的长度怎么设定比较好?
来自故乡的风
2010-10-18 11:15:46
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么样?
谢谢回复!
...全文
6214
19
打赏
收藏
请教:varchar的长度怎么设定比较好?
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。 因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对? 进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么样? 谢谢回复!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pclion
2010-10-19
打赏
举报
回复
这个,好象varchar定义多大对储存和运行效率没什么影响,各人习惯不同而已
xmp250
2010-10-19
打赏
举报
回复
如果数据量不多,和其它表又没什么关联,又不在乎表设计的高效与否, 随便你怎么定义,能用就行.
hovy_yang
2010-10-19
打赏
举报
回复
根据实际情况吧、一个汉字占几个字节、一个字母占几个字节是固定的、可以在定义之前、大致估算一下、然后定义合适的
来自故乡的风
2010-10-19
打赏
举报
回复
多谢各位。这么多回帖让本人受益匪浅!
追加了一些分数结帐。
feilniu
2010-10-19
打赏
举报
回复
一般来说:
完全确定长度的,如邮编、股票代码、手机号码号段(前3位或前7位)、等等,可以用char。除此之外都用varchar。
即,char类型用来表示各种已知定义的code,而varchar类型用来表示各种string。
varchar的长度,最好是在够用(需要适当预测未来需求)且方便管理的前提下尽可能短。因为SQLServer的最大索引键是900字节,在一个varchar(1000)或两个varchar(500)的字段上建索引,可能会导致数据异常。严格约束长度,则能避免这种可能性。
另外,同一个字段,在整个系统中应该保证数据类型(包括长度)一致和字段名尽量一致。比如一个EmployeeID,在所有包含该字段的表中都应该是同样的varchar(30),并且名称都应该尽量是EmployeeID,除非是ManagerID、OwnerEmployeeID这种表示其它含义的情况。这样可以最大限度避免混淆,方便管理。
至于非英文字符,是选择nchar/nvarchar还是char/varchar主要看个人倾向和系统集成的需求。只是要知道一点,用varchar+代码页的机制存储中文字符(DBCS),可能会遇到许多意想不到的麻烦。
feilniu
2010-10-19
打赏
举报
回复
[Quote=引用 11 楼 sqlcenter 的回复:]
够用即可
不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做)
-------------
那个人应该一律定义为varchar(250)
[/Quote]
这种表估计是从Excel中导入SQLServer时创建的。
njlywy
2010-10-19
打赏
举报
回复
按需分配吧…
SQLCenter
2010-10-19
打赏
举报
回复
够用即可
不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做)
-------------
那个人应该一律定义为varchar(250)
jenny0810
2010-10-19
打赏
举报
回复
[Quote=引用 4 楼 acupofnescafe 的回复:]
用char的话,得注意如果字符长度不到char规定的长度,末尾有空格的问题。另外,如果用char的话,最好整个数据库里字符字段都用char。
[/Quote]study
王向飞
2010-10-19
打赏
举报
回复
凡事不能过度,适当够用就好。
Mr_Nice
2010-10-19
打赏
举报
回复
[Quote=引用楼主 torontosky 的回复:]
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么……
[/Quote]
具体应用得具体问题具体分析,一概而论的方法不太适用。
长度的选择一般与字段的含义有关联。
比如移动电话号码 varchar(11) 邮编 varchar(6)等
999朵玫瑰
2010-10-19
打赏
举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
引用楼主 torontosky 的回复:
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varc……
[/Quote]up
春风十里耶耶耶
2010-10-19
打赏
举报
回复
数据库中,如果数据量大而且字段赋予字节太大,会让查询时速度很慢。
claro
2010-10-19
打赏
举报
回复
与应用有关,与实际情况有关。
选择合适的。
幸运的意外
2010-10-19
打赏
举报
回复
用char的话,得注意如果字符长度不到char规定的长度,末尾有空格的问题。另外,如果用char的话,最好整个数据库里字符字段都用char。
kiruya0
2010-10-19
打赏
举报
回复
varchar(max)最好用
playboy080716
2010-10-19
打赏
举报
回复
个人爱好!根据不同的情况定义不同的长度!!
dawugui
2010-10-18
打赏
举报
回复
[Quote=引用楼主 torontosky 的回复:]
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么……
[/Quote]
姓名 varchar(50)或更少,varchar(20)即可,如果考虑少数民族,可以稍微长点.
电话 varchar(11)即可.考虑多个电话,可以稍微长点.
地址 根据实际情况定.
所以,需要不同的情况来考虑,不是千篇一律.
SQL2088
2010-10-18
打赏
举报
回复
算是一种习惯吧
比如,姓名,谁的姓名会有255/2=122 个字符? 所以也必要定义那么长,但又不能定义成CHAR()
所以就定义如VARCHAR(30)
oracle 取字段
长度
为5,oracle9i中
varchar
2(5)字段
长度
不足5前面补0?
oracle9i中
varchar
2(5)字段
长度
不足5前面补0?mip版关注:201答案:2悬赏:20解决时间 2021-01-19 11:34已解决2021-01-18 23:56具体情况是这样的 本来这个流水号这个字段中应该存储的值为:00001、00002、。。。。09999这样的数据,而且不应该有重复,但是现在出现了两个00005,那么就需要第二个00005改成0006,后面的...
数据库char和
varchar
的简单区别
MySQL8.0.29版本 图形化界面 workbench 举例char(10),代表可以存储10个字符,输入的字符不够那么将会自动填充,所以它是固定
长度
。如果使用的是utf8编码,那么每个字符是三个字节,使用的是gdk编码,那么每个字符是两个字节。
varchar
(10),代表最大可以存储十个字符,但实际存储可以不存储十个字符,但要用额外的一到两个字节来表示存储
长度
,所以他是可变
长度
。 固定
长度
的字符比如身份证手机号,可以考虑用char类型因为比
varchar
查找等方面要快。 数据库表的行限制是
Mysql中为什么不能用
varchar
代替text存储长文本数据?
一个荒谬且可笑的事实是,写了那么多遍的头文件#,最近才知道std是standard(标准),i是input,o是output,.h就是.head,我之前竟然从来没有深究过,只是机械地记忆。的容量似乎相同,但由于存储方式、字符编码和数据库系统实现的差异,它们在实际应用中的表现可能会有所不同。来存储长文本数据,取决于数据的具体大小、表中其他列的数量和类型以及应用对性能的特定要求。类型通常是更合适的选择,这是因为它更适合处理超出行大小限制的数据,并且它的存储和检索方式更适合大型文本。
请教
oracle的CLOB字段的最大
长度
?
CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃。最长
长度
是2G. 单位是Byte 表中单个 LOB 字段 在 9i 版本中可保存 4GB 数据, 在 10g 版本中可保存多达 128TB 的数据. 所以理论上是没限制的 ORACLE的数据类型 -- ORACLE的数据类型 常用的数据库字段类型如下: 字段类型
clob类型字段最大存储
长度
_
请教
oracle的CLOB字段的最大
长度
?
CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃。最长
长度
是2G.单位是Byte表中单个 LOB 字段 在 9i 版本中可保存 4GB 数据, 在 10g 版本中可保存多达 128TB 的数据.所以理论上是没限制的ORACLE的数据类型-- ORACLE的数据类型常用的数据库字段类型如下:字段类型 中文说明 限制条件 其它说明CH...
MS-SQL Server
34,838
社区成员
254,631
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章