2017-01-06 3 views
0

私は2つの使用例があります。mysqlのブール型カラムの条件が似ています

  1. 私のテーブルのすべての列について、ユーザーが含まれているものを検索できるようにしています。それはboolean型の列に来るとt/TR/TRU /真のために、彼らは検索している場合、私は

    Select * from table where column is true;

    との結果を示すべきであるとき私のクエリは

Select * from table where column like "%value%";

になります現在、入力された文字列を正規表現でチェックし、クエリをハードコーディングしています。これを達成するより良い方法はありますか?

  • に対するユーザクエリはに等しく、文字列が含まれている特殊文字

    Select * from table where column = "string with backslash escaped";

  • このクエリは動作しません

    が、私は同じようを使用する場合は、

      =の代わりにが動作します。 しかし、boolean型のカラムではlikeは機能しません。

    答えて

    1

    あなたはブール式にマッチするために、このようなものを使用することができます。

    SELECT * 
        FROM my_table 
    WHERE IF(boolean_column, 'true', 'false') LIKE '%tr%'; 
    
    0

    Like句は、テキストタイプのデータ(つまり、VARCHARCHARなど)でのみ使用できます。あなたのロジックは、検索されている列名を見つけ出し、それに基づいてどの演算子を使うかを定義する必要があります。

    このテーブルの代わりにビューを使用するオプションがある場合は、このテーブルのビューを作成し、Booleanカラムをテキストベースのカラムに変換して、他のすべてのカラムと同じようにそのカラムを検索できます。