varchar(max)= varchar?

时间:2010-06-28 14:02:29

标签: sql-server-2005

我注意到我可以写

SELECT CAST(Min(mynumber) AS VARCHAR(Max))+'mystring' AS X

作为

SELECT CAST(Min(mynumber) AS VARCHAR)+'mystring' X

我会后悔遗漏(Max)参数吗?

3 个答案:

答案 0 :(得分:8)

MAX(mynumber)超过30个字符的(不太可能的)情况下,您会后悔:

  

When n is not specified when using the CAST and CONVERT functions, the default length is 30.

答案 1 :(得分:3)

VARCHAR(MAX)应该用于Large Objects.It使用普通数据页,直到内容实际填充8k数据。当溢出发生时,数据存储为旧TEXT,IMAGE和指针替换旧内容。 Varchar用于可变长度的非Unicode字符数据。 n可以是1到8,000之间的值。 Max表示最大存储大小为2 ^ 31-1个字节。 希望它有所帮助。

答案 2 :(得分:2)

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

请参阅:char and varchar (Transact-SQL)

我觉得在没有指定varchar长度的情况下编写代码很糟糕。