社区
MS-SQL Server
帖子详情
请教:varchar的长度怎么设定比较好?
来自故乡的风
2010-10-18 11:15:46
当我定义varchar字段时,是不是可以简单一点,比如短的一律定义成varchar(20),长的定义成varchar(50),超长的另算。
因为我看到有人定义数据库varchar(3),varchar(5),varchar(11)等很精确,那还不如用char呢,对不对?
进一步说,如果我定义数据库,不管是姓名、电话、地址等,一律定义成varchar(255)(我也看过有人这样做),怎么样?
谢谢回复!
...全文
6558
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
字段
长度
范围
本文介绍了一个PHP函数,用于判断输入字符串是否超过MySQL
VARCHAR
字段的字节
长度
。函数通过计算字符串的字节
长度
并与
设定
的最大
长度
比较
,从而确定是否符合
VARCHAR
字段的存储限制。示例代码中展示了如何使用此函数来检查用户表单输入是否在255个字符范围内。
【MySQL】Char与
VarChar
详解
本文详细
比较
了CHAR和
VARCHAR
在MySQL中的存储方式,包括
长度
声明、存储结构、超长值处理以及尾随空格的保留与删除。还讨论了排序规则,特别是在尾随空格对
比较
的影响,以及非二进制字符串的排序规则
设定
。,
oracle to_char n
varchar
2,ORACLE数据库中N
VARCHAR
2、
VARCHAR
2以及
VARCHAR
的区别
N
VARCHAR
2是Oracle的Unicode字符数据类型,最大存储4000字节,
长度
以字符计。
VARCHAR
2是变长字符数据类型,最大同样为4000字节,但
长度
以字节计,汉字占用2个字节。Oracle推荐使用NLS_LENGTH_SEMANTICS参数
设定
长度
语义,并谨慎使用CHAR和BYTE限定符。在
比较
时,
VARCHAR
2使用非填充
比较
语义,确保字符串格式正确以确保跨字符集的数据转换。
VARCHAR
不再推荐,建议使用
VARCHAR
2替代。
Oracle中
varchar
,
varchar
2的区别
本文深入解析了SQL中
VARCHAR
和
VARCHAR
2的数据类型特性,包括它们如何存储可变
长度
的字符串,最大与最小值
设定
,以及在不同字符集下的字节存储方式。重点
比较
了两者在处理汉字、全角字符、空串等方面的差异,并提供了在页面输入
长度
校验时考虑数据库编码格式的实用建议。
MySQL CHAR、
VARCHAR
、TEXT、ENUM、SET(字符串类型)
文章介绍了MySQL中的几种字符串数据类型,包括CHAR、
VARCHAR
、TINYTEXT到LONGTEXT的文本类型,以及ENUM和SET特殊类型。CHAR是固定
长度
的字符串,
VARCHAR
是变长字符串,存储需求取决于实际
长度
。TEXT类型用于存储大段非二进制文本,而ENUM用于存储单个枚举值,SET则可存储多个
设定
值。文章还讨论了这些类型在存储和
比较
时的特点。
MS-SQL Server
34,876
社区成员
254,640
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章