SQLite like
ステートメントでアンダースコア文字が何をするのか分かりません。 ワイルドカード文字%
は、おそらく他のほとんどのSQLデータベースと同じです。SQLite Like%と_
だから、気になる_
キャラクターはどうしますか?
SQLite like
ステートメントでアンダースコア文字が何をするのか分かりません。 ワイルドカード文字%
は、おそらく他のほとんどのSQLデータベースと同じです。SQLite Like%と_
だから、気になる_
キャラクターはどうしますか?
アンダースコアは他のほとんどのSQLデータベースと同じで、任意の1文字に一致します(つまり、正規表現では.
と同じです)。 fine manualから:LIKEパターンで
アンダースコア(「_」)文字列内の任意の1文字に一致します。例えば
:
-- The '_' matches the single 'c'
sqlite> select 'pancakes' like 'pan_akes';
1
-- This would need '__' to match the 'ca', only one '_' fails.
sqlite> select 'pancakes' like 'pan_kes';
0
-- '___' also fails, one too many '_'.
sqlite> select 'pancakes' like 'pan___kes';
0
そして、ちょうど結果が意味をなすことを確認する:SQLiteはzero and one for booleansを使用しています。
それはLIKE
式で標準SQLです:
%
空のものを含め、任意の文字列にマッチします。正規表現では.*
に相当します。_
は、1文字に一致します。正規表現では.
に相当します。あなたが%
、_
をエスケープするための文字を選択することができますし、と自分自身そのもの:
... WHERE expr LIKE 'a_b%c\\d\%\_' ESCAPE '\'
は、これが一致しますa×b×××c\d%_
かa×bc\d%_
なくabc\d%_
もa×b×××cd%_
。
のSQLiteとAdditionnallyあなたはその%
が*
なり、_
が?
なり除いて、まったく同じように動作しGLOB
キーワードを持っています。
ありがとう、Benoit。私は時間だけで判断するもう一つの答えを選びました。 – Francisc
これは私の人生を救った。私はSQLiteクエリで '%'をエスケープする方法を探していました。しかし、私はJavscript + WebSQLに取り組んでいただけでなく、 '\'を働かせるために '\\'を与えなければなりませんでした。以下のクエリは私のために働いた。 SELECT * FROMには、タイトル%LIKE '%50 \\ %%' ESCAPE '\\'(タイトルが50%のすべてのオファーが返されます) – hashcoder
@Franciscを提供しています。しかし、この答えは現在受け入れられている答えよりもはっきりしています。これは将来のユーザーに受け入れられる答えにするサービスです。 – Suragch
私はXCode/Objective-C環境で使用していますが、 '\'は機能しません。
:代わりに何かを使用して...
C-スタイルは、彼らは、標準のSQL(https://www.sqlite.org/lang_expr.html)ブノワの答え@に
補遺ではないので、バックスラッシュ文字がサポートされていない使用してエスケープESCAPE
は、すべてのLIKE
式ではなく、最新のLIKE
式に適用されます。すべてをエスケープするには、ESCAPE
を以下のように複数回使用する必要があります。
WHERE foo LIKE '%bar^%%' ESCAPE '^' AND foo LIKE '%baz^_%' ESCAPE '^'
この述語は、バー%、またはバズに加えて任意の文字を含むfoo
の値と一致しました。
ありがとうございます。 [余分な文字] – Francisc
注: ''pan__kes'のような 'パンケーキ'を選択してください。 –