SQL查询搜索符号&;

SQL查询搜索符号&;,sql,sql-server,special-characters,Sql,Sql Server,Special Characters,需要编写SQL查询来搜索列中的特殊字符。搜索所需的文本是“R&D”,但问题是SQLServer2005将其作为逻辑运算符 Select * From dbo.MyTable Where MyColumn like '%R&D%' 或者你可以用这个代替像这样的: Select * From dbo.MyTable Where PatIndex('%R&D%', MyColumn) > 0 我猜您正在使用参数,对吗? 因为如果不使用参数,它会工作(请参阅其他答案) 不起作用

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

Select * From dbo.MyTable
Where MyColumn like '%R&D%'
或者你可以用这个代替像这样的

Select * From dbo.MyTable
Where PatIndex('%R&D%', MyColumn) > 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 + '%'

编辑:

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

如果没有,我根本不理解这个问题。
其中一个可以工作(有或没有类似功能):

如果您使用参数,我的上述解决方案(“%”+@tmp++“%”)是我所知道的唯一解决方案


编辑2

现在我知道数据类型是“text”: 问题是,您只能使用LIKE(而不是“=”)搜索文本,并且无法为文本列编制索引以提高速度。
文本数据类型已弃用,因此您仍应将其更改为varchar(max)。
而且varchar(max)没有文本所具有的限制:您可以使用“=”搜索它,并且可以为它编制索引


因此,这将是正确的解决方案:将其从text更改为varchar(max),一切都将正常工作

您可以发布您正在使用的查询吗?从包含的表\u Name中选择列\u Name(列\u Name,'R&D')可能会编辑您的问题标题,以特别提及包含(),因为这需要花费很多时间。还有别的选择吗?好像要花很多时间。还有其他选择吗?需要多少时间?您列的数据类型是什么?你有什么样的数据?比较长。现在我们正在寻找替代方案。如果被发现,很好,但不是,与它一起生活。列的数据类型为文本。数据是一大块文本字符。准确地说,使用LIKE..需要1分47秒:(好像要花这么多时间。还有其他选择吗?
declare @tmp nvarchar(20)
set @tmp = 'R&D'

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