我需要做一个查询以搜索以“Nome % teste \ /”为前缀的文本。我正在使用以下方式进行查询:
其中 "name" ILIKE 'Nome a% teste \ /%' ESCAPE 'a'(使用 a 作为转义字符)。
有一行与此匹配,但此查询不返回任何内容。删除斜线('Nome % teste \'),它可以工作。但我不明白为什么斜杠是个问题,因为默认转义是反斜杠,我在这个测试中把它改成了“a” 。
有什么我想念的吗?(我咨询过TFM)
我需要做一个查询以搜索以“Nome % teste \ /”为前缀的文本。我正在使用以下方式进行查询:
其中 "name" ILIKE 'Nome a% teste \ /%' ESCAPE 'a'(使用 a 作为转义字符)。
有一行与此匹配,但此查询不返回任何内容。删除斜线('Nome % teste \'),它可以工作。但我不明白为什么斜杠是个问题,因为默认转义是反斜杠,我在这个测试中把它改成了“a” 。
有什么我想念的吗?(我咨询过TFM)
使用“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}/'
这将返回有/由某物分隔的行(但不是没有分隔的行)
您是否尝试过像这样使用反斜杠来转义它:
where "name" ILIKE 'Nome \% teste \\\/';