我创建了一个带有数据类型[role]列的表nvarchar(10)。
然后,我插入了admin (5个字符长),但是它保存了每个值,因为admin_____每个值都得到完整的范围值10长值返回(下划线空格表示空格)。
另一列[address]是nvarchar(100)类型的。插入“选择地址”后:
MGL UB str GB-building 7 floor 702 number.__________________数据之后的空间太长了。{100 long}定义的最大全长数据
发布于 2019-12-16 03:55:20
听起来可能是填充物的情况
当ANSI_PADDING是ON时
Pad原始值( char列的尾随空格和二进制列的尾随零)到列的长度。
因为您特别提到了nvarchar列。与文献有关的提到(重点是我的):
SET ANSI_PADDING设置不影响nchar、nvarchar、ntext、text、image、var二进制(Max)、varchar(max)和nvarchar(max)数据类型。--它们总是在行为上显示集合ANSI_PADDING。这意味着尾随空格和零不会被修剪。
如果您不喜欢这种行为,您的两个选项是将列类型更改为varchar并关闭ANSI_PADDING:SET ANSI_PADDING OFF。如果这样做,您将需要更新所有现有记录以删除ltrim()/rtrim()填充,因为关闭填充不会影响现有记录。
另一个选项是删除应用程序级别的填充,当它从数据库中提取数据时,应用程序执行.trim()或等效的操作。
https://stackoverflow.com/questions/59350308
复制相似问题