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

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

为什么呢。varchar必须在定义时就指定长度吗。

不是必须指定。

如果没有在数据定义或变量声明语句中指定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

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-25

不是必须指定。

如果没有在数据定义或变量声明语句中指定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

本回答被网友采纳
第2个回答  推荐于2017-09-27
不必要

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

估计你字段长度比1长追问

是啊,我的对应varchar类型的参数是 “王五”
结果调用存储过程后,查询表看结果发现varchar对应的那格是空的

追答

都给你说了,是你的长度太长,变量如果不写,就是默认长度1的,肯定是空了

本回答被提问者采纳
第3个回答  推荐于2017-09-20

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

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

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

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

SQL Server定义varchar类型时就必须指定长度吗?
不是必须指定。如果没有在数据定义或变量声明语句中指定n,则默认长度为1。如果在使用 CAST 和 CONVERT 函数时未指定n,则默认长度为30。VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长...

sql中varchar(50
varchar是一种可变长度的字符类型,用于存储ANSI字符。它的长度不是固定的,而是根据实际数据的长度自动扩展。在SQL Server中,标准的varchar最大长度为8000个字符,但可以通过varchar(max)扩展到2GB,以适应更大的数据需求。在SQL中,var前缀的数据类型意味着长度不是预先设定的。相比之下,定长数据类型如c...

SQLServer的常用数据类型(字符型)详解?(sqlserver字段类型)
对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。定长或变长 所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长...

在操作SQL Server的时候,字段类型是不是能用vchar的时候,就不用nchar...
楼主 可以 但尽量别使用定长 使用nvarchar 或varchar char是定长 不够长度会字段在前面补空格 varchar是变长 根据插入的数据确定 但不能超过定义的长度 就是n这个长度 存储的都是字节数 比如n是1的话 那么一个汉字就存储不了 会报错 只能存一个数字或字母 nvarchar最多支持8000字节(4000个Unicode字...

sqlserver中 varchar 最大长度是多少?
最大长度8000,用max可以存储达到2G。例如:varchar [ ( n | max) ]可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。在某些情况下,前台应用对过长的字串是无法正确处理的,比如一些表格控制,比如C++定义的字符串变量。

关于SQL Server 2000 Varchar长度的一个问题!!请高手解答
VARCHAR数据类型所支持的最大长度也是255个字符。---摘自<百度百科> 所以,你定的长度8000也没用,因为它最多只能为255个字符,至于你返回的只有254个就不知道了.其实如果你非要存储大量的数据的话,建议你用 Text 类型,这个最多可以存储2GB的数据,当然,如果你没有必要存放那么多东西,就建议你用nvarchar...

一篇文章搞定SQL Server字符串类型 - 适合新手
在使用时,char 的最大长度固定,而 varchar 只占用实际存储空间。如果你预知字符串长度,char 是优选;若长度可能变化,varchar 会更为节省空间。nchar 和 nvarchar 的存储空间较大,适合国际字符。text 和 ntext 适合存储大量文本,但查询效率可能不如其他类型。SQL Server 提供了如 LEN、UPPER、LOWER、...

SQL Server中char,varchar,text和nchar,nvarchar,ntext的区别_百度知...
nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。所以一般来...

sql中varchar(50)代表什么?
sqlserver中varchar最大长度是8000,但是可以使用varchar(max),可以达到2G。关于解释:有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,...

SQLSERVER中nvarchar和varchar类型的区别是什么?
n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。注释如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数...

相似回答