2015-04-03 62 views
0

從MySQL數據庫中,我試圖選擇一個有兩個出現\的列。 \圍繞文本。它出現在我嘗試使用IN()進行搜索的術語列表的一個術語中。MySQL選擇帶的字符串 - 字符串是IN()的一部分

這裏是我想寫查詢:

SELECT 
q.pk_id, 
q.test_temp, 
q.financ_course, 
q.etc_id 
FROM quckdbase q 
WHERE q.display IN ('Martin','Google test document.',"\'Margaret course economics\'."); 

正如你所看到的,WHERE子句中的最後一項是問題的原因。對於這個名詞,在數據庫中的具體條目

\'Margaret course economics\'. 

有一個時期,.,在入口的結束。

什麼這個查詢的作用: 它如果列display包含匹配MartinGoogle test document.\'Margaret course economics\.'任何一個條目中選擇4列中的值。

有沒有辦法在IN()中包含第三個搜索詞,以便可以與其他兩個詞條並行搜索?

回答

1

在字符串值中,用另一個反斜槓字符轉義反斜槓。此外,單引號可以通過在另一個單引號之前進行轉義來避開。

要「匹配」的字符串,你可以這樣做:

WHERE q.display IN ('\\''Margaret course economics\\''.') 

的第一個反斜槓是「逃離」,第二個反斜線被解釋爲一個反斜槓字符。字符串文字中的兩個單引號被解釋爲文字單引號。

爲了進行測試,以確認該文本返回值:

SELECT '\\''Margaret course economics\\''.' AS val 
+0

非常感謝。我意識到反斜槓的逃跑,但我不知道單引號的相同。你的答案奏效。 – 2015-04-03 15:01:03