我在mySQL中有一個查詢,意思是返回在我們網站上使用的搜索詞。是的,這是一個標籤雲,是的,我知道這是一個m魚:)在子查詢中轉義%符號
我們有一個管理員頁面,管理員可以查看搜索條件,並選擇將它們排除在雲中顯示。這些詞進入「badWords」表。我們已經得到了一些條款,如「foo%2525252525252520bar」,並且我們很難排除這些條款。
僞代碼,查詢到獲得雲搜索詞是:
SELECT * FROM `searchTerms` WHERE `word` NOT IN (SELECT `word` FROM `badWords`)
這工作得很好,除非從子查詢返回的條件之一,它有一個%。有沒有辦法逃避整個子查詢?我試過做
replace(SELECT `word` FROM `badWords`, '%', '\%')
......但這顯然不是語法正確。
我可以做兩個查詢,如果需要的話,但想知道是否有辦法讓它按原樣完成。
謝謝!
==============================
UPDATE:關閉此就目前而言,我認爲錯誤在別處。一旦我知道肯定會回來報告,但不希望人們浪費時間在這裏回答這個問題,如果它不是正確的問題...
Upvoted迄今收到的兩個回覆。多謝你們。
==============================
更新2:嘆息沒關係......可以」牛逼關閉它:\
==============================
最後更新:嗯,看起來像轉義價值不是問題。在添加到badWords表之前,管理頁面會傳遞URL中的值。在通過URL傳遞值時,它會更改。因此,添加到badWords的內容實際上是「foo%25252525252520bar」(有一個更少的「25」序列)。如果我手動更新badWords中的值,並添加缺少的「25」,則按預期工作。所以沒有必要替換或逃脫任何東西。我只需要適當修復這些URL值。
==============================
你不能立即修改搜索條件嗎?爲什麼那些關於'壞字'的大驚小怪? – glglgl
@glglgl - 立即修改搜索條件是我計劃研究的下一件事。目前,我想用現有數據修復現有的功能。 – charliegriefer