sql >> データベース >  >> RDS >> Mysql

MySQLのパラメータとして列名を渡す

    MySQL(タイトルの質問)でパラメーターとして列名を渡す限り、SQLステートメントではそれは不可能です。 識別子 SQLステートメント(テーブル名や列名など)は、SQLテキストの一部である必要があります。バインドプレースホルダーを使用して渡すことはできません。

    IN 比較演算子は、括弧で囲まれた値のリスト、または値のセットを返す括弧で囲まれたSELECTクエリを期待します。

    何をしようとしているのかはっきりしていません。

    template_allowed_parent_templatesのようです はテーブルの列であり、コンマで区切られた値のリストが含まれています。 (震えます。)

    MySQLを探しているのではないかと思いますFIND_IN_SET 文字列関数。コンマ区切りのリストで特定の値を「検索」します。

    簡単なデモンストレーションとして:

      SELECT FIND_IN_SET('5', '2,3,5,7')
           , FIND_IN_SET('4', '2,3,5,7')
    

    指定された値が「見つかった」場合、関数は正の整数を返します。その関数を述語で利用できます。例:

    WHERE FIND_IN_SET(id,template_allowed_parent_templates)
    

    または

    WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)
    

    (これは、MySQLではブールコンテキストで正の整数がTRUEと評価されるために機能します。)

    私はあなたが何を達成しようとしているのかを推測しているだけです。



    1. MySQL char vs. int

    2. PHPのINET_ATON()とINET_NTOA()?

    3. スレッドを使用してデータベース要求を行う

    4. SQLAlchemyで符号なし整数を定義する方法