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

Rob*_*gan 2 sql-server varchar

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

SQL Server会让我这样做吗?它有点效率低吗?

Raj*_*ore 10

如果您尝试将较大的字符串强制转换为较小的变量,则会以适当的大小简单地切换传入的字符串.

declare @Variable varchar (50)
set @Variable = replace (SPACE (100), ' ' , '.')
print @Variable 
Run Code Online (Sandbox Code Playgroud)

输出长度为50个字符

..................................................
Run Code Online (Sandbox Code Playgroud)

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

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

输出是

Msg 8152, Level 16, State 14, Line 6
String or binary data would be truncated.
The statement has been terminated.
TestVariable
------------------------------------------------
Run Code Online (Sandbox Code Playgroud)