2013-04-23 136 views
-1

我有一个广告商表,并试图匹配来自用户查询字符串的数据。我们有广告商,例如D & G,我想知道如何编写sql以便它是有效的搜索?我正在使用LIKE,但似乎无法使任何工作或通过谷歌找到一个体面的答案,所以我该怎么做?我试着双引号和线象下面这样:将&符添加到sql查询中

AND (UPPER(als.SearchString) LIKE UPPER('"D&G%"')) 

感谢

好了,我的帖子正在投入的问题!下面是我的总WHERE子句:'d & 2G通信集团

WHERE  (a.CountryCodes & 3 > 0) AND (na.PubDate BETWEEN '4/22/2001' AND '4/22/2013') AND (UPPER(als.SearchString) LIKE UPPER('D%') ESCAPE '\') 

显然,“&”已被删除,这将返回419个结果,包括这样的实体但是,只要我尝试在LIKE子句中实现'D \ &',我就不会返回任何记录。我非常愿意接受,我失去了一些东西,并会更乐意为指出的:)

+2

为什么双引号?这似乎工作:http://sqlfiddle.com/#!3/81cd1/2所以我想你有没有告诉我们。 “*似乎无法使任何工作*”的意思是什么?什么是错误信息?你得到的结果是什么?表中的数据是什么? – 2013-04-23 20:58:32

+0

不太确定为什么你投了票?我没有收到错误消息,但我没有收到任何结果。我试着用双引号来看看它是否工作,类似于其他论坛上的一些建议。 'D&G'在表格中,匹配'D%'或类似的查询字符串,但如果将&字符串放在字符串中,我似乎无法做任何工作。 – flavour404 2013-04-23 21:28:25

+0

我没有downvote。你检查了SQLFiddle链接吗?它清楚地表明'like'确实可以用'&'工作,并且不需要任何转义。你**正在使用SQL Server,对吗? – 2013-04-23 21:57:12

回答

1

试试这个:

set ESCAPE \ 
AND (UPPER(als.SearchString) LIKE UPPER('"D\&B%"')) 
+0

你为什么需要这个? '&'不是LIKE表达式的通配符。请参阅此处:http://sqlfiddle.com/#!3/81cd1/2 – 2013-04-23 20:56:07

0

添加ESCAPE到的LIKE结束条件,并使用该字符的条件。

AND (UPPER(als.SearchString) LIKE UPPER('"D\&G%"')) ESCAPE '\' 
+0

我试过这个:AND(als.SearchString LIKE'D \&G%'ESCAPE'\') 但我仍然没有收到任何东西。 – flavour404 2013-04-23 20:40:28

+2

没有必要转义'&'。您只需要通配符('%'和'_') – 2013-04-23 21:01:01

+0

&不是运营商,这是D&G广告,它是公司名称。你不需要在查询中跳过%,它仅仅代表任何事情! – flavour404 2013-04-23 21:56:03