我需要执行查询,以'Nome%teste \ /'作为前缀搜索文本。我正在使用:
进行查询其中“name”ILIKE'Nome a%teste \ /%'ESCAPE'a'(使用转义符号)。
有一行与此匹配,但此查询不返回任何内容。删除斜杠('Nome%teste \'),它可以正常工作。但我不明白为什么斜杠是一个问题,因为默认转义是反斜杠,我已将其更改为'a'在这个测试中。
有些东西我不见了? (我咨询了TFM)
答案 0 :(得分: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
可能你的字符串没有你指定的文字“/”。你可能在其中有一个null或其他空格字符。或者,您可能拥有/使用不同的字符集。
我会尝试用它来测试这种可能的情况
WHERE "name" ILIKE 'Nome \% ' AND "name" ~* '\\.{1,10}/'
将返回具有/由某个东西分隔的行(但不是没有分隔的行)
答案 1 :(得分:1)
您是否尝试过使用反斜杠来逃避它:
where "name" ILIKE 'Nome \% teste \\\/';