2013-04-23 57 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