SQL Server定义varchar类型时就必须指定长度吗?

我定义的简单存储过程,有个参数是varchar类型的,我忘记写长度了。结果调用存储过程时,varchar类型的参数就没传进去。是空的。为什么呢。varchar必须在定义时... 我定义的简单存储过程,有个参数是varchar类型的,我忘记写长度了。
结果调用存储过程时,varchar类型的参数就没传进去。是空的。

为什么呢。varchar必须在定义时就指定长度吗。
展开
 我来答
阿平呀
高粉答主

2019-08-24 · 繁杂信息太多,你要学会辨别
知道答主
回答量:24
采纳率:100%
帮助的人:3210
展开全部

不是必须指定。

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

VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。

Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序

扩展资料:

SQL Server 2008中在数据仓库方面的优点:

1、数据压缩

数据仓库中的数据容量随着操作系统数目的快速增加而在持续增长。内嵌在SQL Server 2008中的数据压缩使得公司可以更有效的存储数据,同时还提高了性能,因为降低了I/O 要求。

2、备份压缩

保持一直在线做基于磁盘的备份是花费很昂贵的,并且很耗时。有了SQL Server 2008的备份压缩,保持在线备份所需的存储降低了,并且备份速度明显变快了,因为所需要的磁盘I/O 减少了。

3、分区表并行

分割使公司能够更有效的管理大型的、不断增长的数据表,只要简单的将它们分割为易管理的数据块。SQL Server 2008是在SQL Server 2005中的分割的优势之上建立的,它改进了对大型的分区表的操作性能。

4、星型联接查询优化器

SQL Server 2008为普通的数据仓库场景提供了改进的查询性能。星型联接查询优化器通过辨别数据仓库连接模式降低了查询响应时间。

参考资料来源:百度百科-sql server 2008

SWDgreat
2019-07-25 · TA获得超过8405个赞
知道答主
回答量:1012
采纳率:80%
帮助的人:23.7万
展开全部

不是必须指定。

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

VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。

其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。

对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。MySQL4.1以前,VARCHAR数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)。

扩展资料

varchar特点:

1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。

2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。

3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。

4、5.0以上版本,取值或设置值都会保存字符串末尾的空格,4.1之前的版本都会把字符串末尾的空格删除掉。

5、最大长度远大于平均长度,很少发生更新的时候适合使用varchar,因为碎片更少了。

参考资料来源:百度百科-varchar

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
推荐于2017-09-27 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2966万
展开全部
不必要

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

估计你字段长度比1长
追问
是啊,我的对应varchar类型的参数是 “王五”
结果调用存储过程后,查询表看结果发现varchar对应的那格是空的
追答
都给你说了,是你的长度太长,变量如果不写,就是默认长度1的,肯定是空了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2dca20d
推荐于2017-09-20 · TA获得超过4036个赞
知道大有可为答主
回答量:2638
采纳率:77%
帮助的人:1009万
展开全部

在SQL Server中通过varchar定义数据类型时有3种使用方法:

  1.     varchar                   说明:默认长度为1个字节

  2.    varcahr(n)                说明:n的长度取值范围:1~8000

  3.   varchar(max)            说明:max指的是varchar类型允许的最大长度:8000

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式