我理解SQL在执行比较时填充字符串,但我想知道为什么nvarchar和varchar数据类型之间的行为存在差异。
我创建了两个表:
CREATE TABLE [Table_1]([F1] [nvarchar](10) NULL)
CREATE TABLE [Table_2]([F1] [varchar](10) NULL)
并插入一些带有尾随空格的文字:
INSERT INTO [Table_1]([F1]) VALUES ('abc ')
INSERT INTO [Table_2]([F1]) VALUES ('abc ')
在每个数据上选择DATALENGTH确认数据中存在尾随空白 - nvarchar字段为12个字节,varchar为6个字节。
因此,正如预期的那样,对于nvarchar字段,请选择=' abc'返回记录,但喜欢' abc'没有:
SELECT [F1] FROM [Table_1] WHERE [F1] = 'abc' --> 1 row returned
SELECT [F1] FROM [Table_1] WHERE [F1] like 'abc' --> 0 row returned
但是,varchar字段上的相同选择行为有所不同:
SELECT [F1] FROM [Table_2] WHERE [F1] = 'abc' --> 1 row returned
SELECT [F1] FROM [Table_2] WHERE [F1] like 'abc' --> 1 row returned
为' ='返回行。和'喜欢'。我只是想知道为什么nvarchar和varchar在这方面有所不同。
由于