在SQLServer中字符串中连续的空格数据量是无法判断的,以下是测试脚本:
DROP TABLE [dbo].[TestTable]
CREATE TABLE [dbo].[TestTable](
[Id] [int] NOT NULL,
[Name] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
insert into TestTable(id, [Name]) values (1, '')
insert into TestTable(id, [Name]) values (2, ' ')
insert into TestTable(id, [Name]) values (3, ' ')
select id, 'XX' + [Name] + 'YY' from TestTable where [Name] = ''
select id, 'XX' + [Name] + 'YY' from TestTable where [Name] = ' '
select id, 'XX' + [Name] + 'YY' from TestTable where [Name] = ' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] <> @Name1 )',N'@Name1 char(1)',@Name1=' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] <> @Name1 )',N'@Name1 char(8000)',@Name1=' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] <> @Name1 )',N'@Name1 varchar(1)',@Name1=' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] = @Name1 )',N'@Name1 char(8000)',@Name1=' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] = @Name1 )',N'@Name1 char(1)',@Name1=' '
exec sp_executesql N'SELECT * FROM [dbo].[TestTable] WHERE ([Name] = @Name1 )',N'@Name1 varchar(5)',@Name1=' '