2011-08-21 31 views
2

此脚本应该只挑选砖行='http://www.bol.com/something' 行但它返回几乎所有30行,即使其他文本它像参数一样使用不正确

DECLARE @urlpart nvarchar 
set @urlpart='bol.com' 
SET @urlpart = '%'[email protected] + '%' 

SELECT * FROM Brick 
WHERE BrickUrl like @urlpart 

写入而不参数是这样的:

SELECT * FROM brick 
WHERE BrickUrl like '%bol.com%' 

返回正确地含有bol.com的6行。

我找不出原因是什么,或者我做错了什么,你看到了吗?

+0

砖拼写不同(乐砖)。这只是一个错字吗? –

+0

如果这些是'NVARCHAR'字符串,则应该使用'N''前缀:'set @urlpart = N'bol.com'/ SET @urlpart = N'%'+ @urlpart + N'%'' –

回答

4

试试这个:

DECLARE @urlpart nvarchar 
set @urlpart='bol.com' 
SET @urlpart = '%'[email protected] + '%' 
select @urlpart 

结果:

(No column name) 
% 

,然后你应该试试这个,而不是

DECLARE @urlpart nvarchar(128) 
set @urlpart='bol.com' 
SET @urlpart = '%'[email protected] + '%' 
select @urlpart 

结果;

(No column name) 
%bol.com% 

如果不指定的nvarchar大小,你会在两种情况下获得尺寸1.