1

我需要做一个查询以搜索以“Nome % teste \ /”为前缀的文本。我正在使用以下方式进行查询:

其中 "name" ILIKE 'Nome a% teste \ /%' ESCAPE 'a'(使用 a 作为转义字符)。

有一行与此匹配,但此查询不返回任何内容。删除斜线('Nome % teste \'),它可以工作。但我不明白为什么斜杠是个问题,因为默认转义是反斜杠,我在这个测试中把它改成了“a” 。

有什么我想念的吗?(我咨询过TFM)

4

2 回答 2

2

使用“ESCAPE”说明符

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

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

注意:对于字符串解析器,您仍然需要两次 \。

没有 ESCAPE 你需要做

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

(4 \ 代表一个文字 \ )


谢谢,但我仍然有斜线的原始问题。搜索

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

不要给我结果,而

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

(删除了行中存在的斜线)按预期工作。– Kknd

您的字符串可能没有您指定的文字“/”。您之间可能有一个空字符或其他空白字符。或者,您有 / 在不同的字符集中。

我会尝试用它来测试这种可能的情况

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

这将返回有/由某物分隔的行(但不是没有分隔的行)

于 2008-10-13T03:38:07.887 回答
1

您是否尝试过像这样使用反斜杠来转义它:

where "name" ILIKE 'Nome \% teste \\\/';
于 2008-10-13T03:20:57.827 回答