2010-09-02 153 views
-1

需要編寫SQL查詢以在列中搜索特殊字符。需要搜索的文本是'R & D',但問題在於SQL Server 2005將其作爲邏輯運算符。SQL查詢搜索&符號&

+3

你能發表你正在使用的查詢嗎? – Oded 2010-09-02 07:42:01

+0

從Table_Name中選擇Column_Name 其中包含(Column_Name,'R&D') – Malik 2010-09-02 08:57:54

+0

也許編輯您的問題標題以具體提及contains() – codeulike 2010-09-02 12:37:19

回答

0

我猜你正在使用的參數,正確嗎?
因爲如果你不使用參數,它可以工作(請參閱其他答案)。

什麼不工作是這樣的:

declare @tmp nvarchar(20) 
set @tmp = 'R&D' 

select * from MyTable where MyColumn = @tmp 

,我發現,使其與參數的工作的唯一辦法是做這樣的:

declare @tmp nvarchar(20) 
set @tmp = 'R&D' 

select * from MyTable where MyColumn like '%' + @tmp + '%' 

編輯:

首先,我需要知道您是否使用參數o不是。

如果不是,我根本不理解這個問題。
其中之一將工作(帶或不帶等):

select * from MyTable where MyColumn = 'R&D' 
select * from MyTable where MyColumn like '%R&D%' 

如果做參數的工作,我的上述溶液(... LIKE '%' + @tmp + '%')是我知道的唯一一個。


EDIT 2

現在我知道,數據類型爲「文本」: 的問題是,你只能搜索文本與LIKE(不帶「=」),你可以不索引文本列來提高速度。
不贊成使用文本數據類型,所以您應該將其更改爲varchar(max)。
和varchar(max)沒有文本所具有的限制:您可以使用'='進行搜索,並且可以對其進行索引。

所以這將是正確的解決方案:將其從文本更改爲varchar(max),並且一切都將工作!

+0

喜歡花這麼多時間。還有其他選擇嗎? – Malik 2010-09-02 08:52:49

1
Select * From dbo.MyTable 
Where MyColumn like '%R&D%' 

,或者你可以用這個來代替like

Select * From dbo.MyTable 
Where PatIndex('%R&D%', MyColumn) > 0 
+0

正在花費那麼多時間。還有其他選擇嗎? – Malik 2010-09-02 08:57:09

0
declare @tbl table 
(
    textcol varchar(50) 
) 

insert into @tbl select 'R&D' 
insert into @tbl select 'What is R&D' 
insert into @tbl select 'SometextR&DAndsometext' 
insert into @tbl select 'This Row will not return' 

select * from @tbl where textcol like '%R&D%' 
+0

像是花了這麼多時間。還有其他選擇嗎? – Malik 2010-09-02 08:55:18

+0

多少時間?什麼是你的專欄的數據類型?你有什麼樣的數據? – Kashif 2010-09-02 09:09:04

+0

比較久。現在我們正在尋找替代品。如果找到,很好,而不是與之共存。列的數據類型是文本。數據是巨大的文本字符。 – Malik 2010-09-02 09:22:30