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