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)