1

「Nome % teste \ / 」を接頭辞として含むテキストを検索するクエリを実行する必要があります。私は以下を使用してクエリを実行しています:

where "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

注: 文字列パーサーには \ を 2 回使用する必要があります。

ESCAPE がなければ、あなたがする必要があります

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

( 1 つのリテラル \ を表す 4 つの \ )


ありがとう、でもスラッシュにはまだ元の問題があります。で検索する

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

その間、私に結果を与えないでください

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

(行にあるスラッシュを削除しました)期待どおりに機能します。– Kknd

指定したようなリテラル「/」が文字列に含まれていない可能性があります。null またはその他の空白文字が間にある可能性があります。または、別の文字セットに / がある可能性があります。

これを使用して、その可能性のあるシナリオをテストしようとします

 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 に答える