2017-07-04 18 views
0

私はいくつかの文字が文字列に提示されているかどうかを判断するためにGLOB演算子を使用しようとしている:パターンの先頭に「[]」GLOBで '['と ']'をエスケープするには?

SELECT * 
FROM Test 
WHERE num GLOB '*[~!?.;:+=()<>_#%&/\\]*' 

それはで正常に動作します:

WHERE num GLOB '*[][~!?.;:+=()<>_#%&/\\]*' 

しかし、パターンのどこにでも[[] 'を配置すると、何も返されません。

WHERE num GLOB '*[[]~!?.;:+=()<>_#%&/\\]*' 

このような動作の理由は何ですか?

答えて

1

]文字で終了します。したがって[[]は、[のみを含む文字リストです。

アン空の文字リストは、リスト内の]文字を含めるために使用することができ、直接開口部[[]...])の後ろ]を入れ、その例外として、意味がありません。しかしそれが唯一の例外です。

(同様の理由で、リテラル文字として-は、リスト内の最後のいずれかでなければなりません。)

+0

あなたは「] * [] ...」正確に意味しますか?エスケープ記号を使用することは可能ですか? – ichernob

+0

GLOBにはエスケープ文字はありません。 –

+0

だから、もし私が '['と ']'の両方を検出したいのであれば、 "* [] [...] *"のようなパターンを入力する必要がありますか? – ichernob

関連する問題