天遇到了一个问题,当执行一个存储过程,关于匹配表中的某个字段的某些字符串时,老是操作不正确。例如 Select * From Table Where TableItem like 'somechars'+'%',这种情况总是选择的行多一些。然后查了一下SQL自身的帮助,里面说在存储过程里如果有char或nvarchar再执行Like @Nme时会得不到正确结果。然后换成varchar类型得到了正确结果。
总结一下区别:char类型如果没有足够字符时会填充空,在执行存储过程时不会得到正确结果;varchar在此情况下不填充;nvarchar类似char类型。