我注意到我可以写
SELECT CAST(Min(mynumber) AS VARCHAR(Max))+'mystring' AS X
作为
SELECT CAST(Min(mynumber) AS VARCHAR)+'mystring' X
我会后悔遗漏(Max)参数吗?
答案 0 :(得分:8)
在MAX(mynumber)
超过30个字符的(不太可能的)情况下,您会后悔:
When n is not specified when using the
CAST
andCONVERT
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长度的情况下编写代码很糟糕。