SQL Server字符串比较:nvarchar与varchar

时间:2014-12-01 15:43:12

标签: sql-server

我理解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在这方面有所不同。

由于

0 个答案:

没有答案