我需要执行一个查询,以'Nome%teste \ /'作为前缀搜索文本。我正在使用以下查询:在ILIKE查询中转义
其中“名称”ILIKE'Nome a%teste \ /%'ESCAPE'a'(使用as转义字符)。
有一行匹配此行,但此查询不返回任何内容。删除斜杠('Nome%teste \'),它的工作原理。但我不明白为什么斜杠是一个问题,因为默认转义是一个反斜杠,我已经把它改为'a'在这个测试中。
有什么我失踪? (我请教TFM)
我需要执行一个查询,以'Nome%teste \ /'作为前缀搜索文本。我正在使用以下查询:在ILIKE查询中转义
其中“名称”ILIKE'Nome a%teste \ /%'ESCAPE'a'(使用as转义字符)。
有一行匹配此行,但此查询不返回任何内容。删除斜杠('Nome%teste \'),它的工作原理。但我不明白为什么斜杠是一个问题,因为默认转义是一个反斜杠,我已经把它改为'a'在这个测试中。
有什么我失踪? (我请教TFM)
使用 “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}/'
将返回已/的东西分开
您是否尝试过只用反斜杠逃脱这样的:
where "name" ILIKE 'Nome \% teste \\\/';
我试过线(但不是线,未见分离),但它不起作用。 – Kknd 2008-10-13 03:25:24
谢谢,但我仍然有斜线的原始问题。使用WHERE名称搜索ILIKE'Nome \%test \\\\ /%'不会给我一个结果,而WHERE“name”ILIKE'Nome \%test \\\\%'(删除斜线,在该行中存在)按预期工作。 – Kknd 2008-10-13 15:30:13