2011-08-21 85 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.