0

私のデータベースにはエントリがありますABCCBAA

そして、私のクエリは次のようになります。

    string sql = SELECT * FROM signatures WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE _BCCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE A_CCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE AB_CBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABC_BAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCC_AA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCB_A 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCBA_

この1つのクエリで多くのレコードを検索しているので、やり過ぎを許してください。

私は W3Schools の例に対してこのクエリを試してみましたが、コンテキストに入れると問題なく動作します。SQLではなくSQLiteを使用していることは知っていますが、構文はまだ完全ではありません。

これらの OR ステートメントのいずれかが結果をフェッチすることを期待していますが、構文エラーのためにまだ実行できていません。現時点で私は得ています

「SQL 論理エラーまたはデータベースがありません

そのような列はありません: ABCCBAA"

なぜそれを列名として使用しているのですか? 他の例は、クエリが正しいと私に信じさせます。

私はこれで長い間遊んでいたので、正しく把握していない単純なものかもしれません。

4

1 に答える 1

3

たとえば、次のように文字列を引用する必要があります。

WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE 'ABCCBAA'

また、それほど多くは必要ありませんOR length(signature) BETWEEN 6 AND 8。次のようなことをしてください:

string sql = @"SELECT * FROM signatures 
               WHERE length(signature) BETWEEN 6 AND 8 
               AND (signature LIKE 'ABCCBAA' OR signature LIKE '_BCCBAA' ...)";
于 2013-08-22T23:04:19.840 に答える