SQL Server中VARCHAR的最大大小有多严格?

时间:2010-03-17 17:32:52

标签: sql-server varchar

即。如果我创建一个VARCHAR(50)字段,如果我尝试为它分配一个长度为100个字符的值会发生什么?

SQL Server会让我这样做吗?它在某种程度上效率低下了吗?

3 个答案:

答案 0 :(得分:10)

如果你尝试将一个大字符串强制转换为一个较小的变量,那么传入的字符串将被简单地切割成适当的大小。

declare @Variable varchar (50)
set @Variable = replace (SPACE (100), ' ' , '.')
print @Variable 

输出长度为50个字符

..................................................

如果您尝试将大字符串强制转换为表格中的小字段,则会引发错误

declare @MyTable Table
(
    TestVariable varchar (50)
)
insert into @MyTable (TestVariable) select replace (SPACE (100), ' ' , '.')
select * from @MyTable 

输出

Msg 8152, Level 16, State 14, Line 6
String or binary data would be truncated.
The statement has been terminated.
TestVariable
------------------------------------------------

答案 1 :(得分:3)

它会抛出一个错误,说该值会被截断。它不会写超过您指定的50个字符,否则您将无法阻止行大小失控

答案 2 :(得分:1)

  

SQL Server会让我这样做吗?它在某种程度上效率低下了吗?

它会发出错误,说字符串或二进制数据会被截断。