2008-10-13 49 views
0

我需要執行一個查詢,以'Nome%teste \ /'作爲前綴搜索文本。我正在使用以下查詢:在ILIKE查詢中轉義

其中「名稱」ILIKE'Nome a%teste \ /%'ESCAPE'a'(使用as轉義字符)。

有一行匹配此行,但此查詢不返回任何內容。刪除斜槓('Nome%teste \'),它的工作原理。但我不明白爲什麼斜槓是一個問題,因爲默認轉義是一個反斜槓,我已經把它改爲'a'在這個測試中。

有什麼我失蹤? (我請教TFM)

回答

2

使用 「ESCAPE」 符

WHERE "name" ILIKE 'Nome ~% teste \\/' ESCAPE '~' 

http://www.postgresql.org/docs/8.2/static/functions-matching.html

注:您仍然需要爲字符串解析器提供兩次\。

沒有逃生你需要做的

WHERE "name" ILIKE 'Nome \% test \\\\/' 

(4 \「s到代表一個文字\)


謝謝,但我還是原來的問題與削減。與

WHERE "name" ILIKE 'Nome \% test \\\\/%' 

搜索不給我一個結果,而

WHERE "name" ILIKE 'Nome \% test \\\\%' 

(除去斜線,這是目前該行中)按預期工作。 - Kknd

它可能你的字符串沒有像你指定的文字「/」。你可能有一個null或者其他空白字符。或者可能,你有/在不同的字符集中。

我會嘗試使用這個測試對於可能的情況

WHERE "name" ILIKE 'Nome \% ' AND "name" ~* '\\.{1,10}/' 

將返回已/的東西分開

+0

謝謝,但我仍然有斜線的原始問題。使用WHERE名稱搜索ILIKE'Nome \%test \\\\ /%'不會給我一個結果,而WHERE「name」ILIKE'Nome \%test \\\\%'(刪除斜線,在該行中存在)按預期工作。 – Kknd 2008-10-13 15:30:13

1

您是否嘗試過只用反斜槓逃脫這樣的:

where "name" ILIKE 'Nome \% teste \\\/'; 
+0

我試過線(但不是線,未見分離),但它不起作用。 – Kknd 2008-10-13 03:25:24