需要編寫SQL查詢以在列中搜索特殊字符。需要搜索的文本是'R & D',但問題在於SQL Server 2005將其作爲邏輯運算符。SQL查詢搜索&符號&
回答
我猜你正在使用的參數,正確嗎?
因爲如果你不使用參數,它可以工作(請參閱其他答案)。
什麼不工作是這樣的:
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),並且一切都將工作!
喜歡花這麼多時間。還有其他選擇嗎? – Malik 2010-09-02 08:52:49
Select * From dbo.MyTable
Where MyColumn like '%R&D%'
,或者你可以用這個來代替like
:
Select * From dbo.MyTable
Where PatIndex('%R&D%', MyColumn) > 0
正在花費那麼多時間。還有其他選擇嗎? – Malik 2010-09-02 08:57:09
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%'
你能發表你正在使用的查詢嗎? – Oded 2010-09-02 07:42:01
從Table_Name中選擇Column_Name 其中包含(Column_Name,'R&D') – Malik 2010-09-02 08:57:54
也許編輯您的問題標題以具體提及contains() – codeulike 2010-09-02 12:37:19