情况如下图,在YiXun之后存在25个空格:
进入表设计视图一看,字段类型确实是nvarchar(30)类型(变长):
而且只有两条记录存在这样的问题。
由于RequestBy这个字段数据需要作为一个检测条件,如果“YiXun”变成“YiXun ”,这样会导致判定不通过。
那么问题究竟出在哪里呢?从客户端的赋值、保存、加载等相关的Debug和对SQL Server检查均未找出原因,这个问题陷入了困局。
蓦然回首,问题还是表结构
转机出现在备份数据库中,原来当时新建表的时候,由于操作失误,将RequestBy和GNC字段的类型设置为了nchar(30)类型(定长),虽然在后面的调整中发现了这个问题,并调整了字段类型,但是nchar转换为nvarchar的时候,会保留在nchar类型是由于定长规则产生的空格,但是当时并未处理已有数据。直到在测试对RequestBy字段的比对功能的时候才发现这个问题。
PS.上文中空格为定长字段类型的补充字符
参考:
nchar 和 nvarchar (Transact-SQL)