社区
MS-SQL Server
帖子详情
请教:varchar的长度怎么设定比较好?
来自故乡的风
2010-10-18 11:15:46
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么样?
谢谢回复!
...全文
6586
19
打赏
收藏
请教:varchar的长度怎么设定比较好?
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。 因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对? 进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么样? 谢谢回复!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
PHP代码:判断输入是否超过MySQL的
VARCHAR
字段
长度
范围
这是为了确保在计算字符串
长度
时,考虑到了多字节字符的情况,因为MySQL中的
VARCHAR
字段
长度
是以字节为单位的。这样,我们就可以使用上述代码来判断输入字符串是否超过MySQL的
VARCHAR
字段
长度
范围了。首先,让我们来编写一个PHP函数,用于判断输入字符串是否超过MySQL的
VARCHAR
字段
长度
范围。最后,根据函数的返回值,我们输出相应的消息,告知用户输入字符串是否在
VARCHAR
字段
长度
范围内。然后,我们将输入字符串的
长度
与最大
长度
进行
比较
。函数,将输入字符串和最大
长度
作为参数传递给它。
【MySQL】Char与
VarChar
详解
Mysql Char 与
VarChar
区别
oracle to_char n
varchar
2,ORACLE数据库中N
VARCHAR
2、
VARCHAR
2以及
VARCHAR
的区别
N
VARCHAR
2 DatatypeThe N
VARCHAR
2 datatype is a Unicode-only datatype. When youcreate a table with an N
VARCHAR
2 column, you supply the maximum number ofcharacters it can hold. Oracle subsequentlystores ...
Oracle中
varchar
,
varchar
2的区别
联系: 1.
varchar
/
varchar
2用于存储可变
长度
的字符串 比如
varchar
(20),存入字符串’abc’,则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如
varchar
(20)表示最大可以存放20个字节的内容区别: 1.
varchar
2把所有字符都占两字节处理(一般情况下),
varchar
只对汉字和全角
MySQL CHAR、
VARCHAR
、TEXT、ENUM、SET(字符串类型)
字符串类型用来存储字符串数据,还可以存储图片和声音的二进制数据。字符串可以区分或者不区分大小写的串
比较
,还可以进行正则表达式的匹配查找。
MS-SQL Server
34,875
社区成员
254,639
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章