我有名字和姓氏,尾随空格。我有两个SQL查询 - 第一个查询返回结果,即使我搜索没有空格。 (第一个查询返回不需要的结果)。SQL Server WHERE条件不考虑空白
- 此行为在所有版本的SQL Server中是否一致?
- 这是已知的行为吗?它是否记录在
msdn
的任何地方SQL Server 2008 R2
?
CODE
DECLARE @NameTable TABLE (first_name varchar(40),last_name varchar(40))
INSERT INTO @NameTable VALUES ('STEVEN ','STANLEY ');
--QUERY 1
SELECT first_name AS [FirstName], last_name AS [LastName]
FROM @NameTable A
WHERE (first_name = 'STEVEN')
AND (last_name = 'STANLEY')
--QUERY 2
SELECT first_name AS [FirstName], last_name AS [LastName]
FROM @NameTable A
WHERE ((ISNULL(first_name,'')+' ' +ISNULL(last_name,'')) = 'STEVEN STANLEY')
--QUERY 3 (With LTRIM and RTRIM)
SELECT first_name AS [FirstName], last_name AS [LastName]
FROM @NameTable A
WHERE ((ISNULL(LTRIM(RTRIM(first_name)),'')+' ' +ISNULL(LTRIM(RTRIM(last_name)),'')) = 'STEVEN STANLEY')
参考:
可能重复[SQL WHERE尾随空格条款匹配值] (http://stackoverflow.com/questions/4166159/sql-where-clause-matching-values-with-trailing-spaces) – Pondlife