即,如果我创建一个 VARCHAR(50) 字段,如果我尝试为其分配一个 100 个字符长的值会发生什么?
SQL Server 会让我这样做吗?它是否效率较低?
即,如果我创建一个 VARCHAR(50) 字段,如果我尝试为其分配一个 100 个字符长的值会发生什么?
SQL Server 会让我这样做吗?它是否效率较低?
如果您尝试将大字符串强制转换为较小大小的变量,则传入的字符串将被简单地截断为适当的大小。
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
------------------------------------------------
它会抛出一个错误,指出该值将被截断。它不会写入超过您指定的 50 个字符,否则您将无法防止行大小失控
SQL Server 会让我这样做吗?它是否效率较低?
它会发出一个错误,说字符串或二进制数据将被截断。