2016-11-19 49 views
2

在我的數據庫中,我從包含Dillon Brookfield的字段中進行選擇。我試圖用以下語句搜索brookfield,思考LIKE將選擇數據,但它不起作用。返回類似於輸入的結果的最佳方式是什麼?

SELECT * 
FROM [Reports] 
WHERE ([VisitorName] LIKE '%' + @VisitorName + '%' 
     OR [PlateNumber] = @PlateNumber) 

我記錄的人誰已經從財產禁止連同他們的板(如果知道的話),但如果不把他們的名字恰好它不返回值。返回類似結果的最佳方式是什麼?

+0

唯一的問題是,'LIKE'是否工作區分大小寫? – AliIshaq

+0

我試試看......不管我是尋找布魯克菲爾德還是布魯克菲爾德,它都不會回來。 – birddseedd

+0

你的意思是'LIKE'%'+ @PlateNumber +'%''? – bansi

回答

2

這更像是一個評論,但裏面有代碼,評論只允許一個@

什麼數據類型是你的@PlateNumber?它是CHAR還是VARCHAR?它可以有所作爲。像這些測試一樣。

DECLARE @char NCHAR(20) = 'space'; 
SELECT '%'[email protected]+ '%',IIF('space' Like '%'[email protected]+ '%', 1,0); 
DECLARE @varchar NVARCHAR(20) = 'space'; 
SELECT '%'[email protected]+ '%',IIF('space' Like '%'[email protected]+ '%', 1,0); 

第一個SELECT會給你

'%space    %',0. -- there will be 15 blank character between space and % 

第二個選擇會給你

'%space%', 1. 
+0

數據類型是VARCHAR(50)當服務器啓動時,我可以嘗試它作爲NCHAR。這兩者有什麼區別? – birddseedd

+0

當你CONCAT時,如果變量是NCHAR,它將保留空間作爲變量的長度。 (在上面的例子中,如果變量的類型是NCHAR(50),它將是「空格」,然後是45空白字符。另一方面,如果它是NVARCHAR(50),那麼它將只是「空格」。 ) – DVT

0

建立全文索引。搜索全名搜索的名稱/地址和其他類似字段 - 它會更快,你可以找到所有的名字 - 狄龍布魯克菲爾德與布魯克菲爾德狄龍。

相關問題