SQL查询搜索符号&

时间:2010-09-02 07:40:09

标签: sql sql-server special-characters

需要编写SQL查询来搜索列中的特殊字符。搜索所需的文本是“R& D”,但问题是SQL Server 2005将其作为逻辑运算符。

3 个答案:

答案 0 :(得分:1)

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

或者您可以使用此代替like

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

答案 1 :(得分: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%'

答案 2 :(得分: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 + '%'

编辑:

首先,我需要知道你是否使用参数。

如果没有,我根本不明白这个问题 其中一个可以工作(有或没有LIKE):

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

如果你使用参数,我上面的解决方案(...比如'%'+ @tmp +'%')是我唯一知道的。


编辑2

现在我知道数据类型是“text”: 问题是您只能使用LIKE搜索文本(不能使用'='),并且您无法索引文本列以提高速度。
不推荐使用文本数据类型,因此无论如何都应将其更改为varchar(max) varchar(max)没有文本的限制:您可以使用'='进行搜索,然后将其编入索引。

这将是正确的解决方案:将其从文本更改为varchar(max),一切都会正常工作!