2017-07-05 4 views
1

MySQLでフィールド名を変数として設定する方法はありますか?たとえば :MySQLフィールド名を変数として定義する

set @gender = (table_name.gender_column); 

select * from table_name 
where find_in_set(table_name.gender_column, @gender); 

これは、「フィールドリストで不明なテーブル」を返します正確にどのように私はそれを試してみましたが、私です。事前に

おかげで、

マイク

EDIT:目的は、動的結晶レポートパラメータに変数を使用することです。しかし、私がしたくないことは、新しいタイプのジェンダーを新しいものが登場するたびに追加する必要があるということです。

E.G.私は「男性」と「女性」を有し、「トランスジェンダー」を追加しています。私は、gender_columnに追加されたときに、パラメータにTrans gender変数を表示するCrystalの動的パラメータが必要です。私は、変数を使用して複数のクエリに「Trans-gender」を追加する必要があります。

+0

「トランスジェンダー」は性別ではありません。この種のものを開示したくない人には、通常、「その他」または「n/a」を追加するのが最善です。 – tadman

+0

ありがとう - しかし、私はこの実際の例を使用していません。私は質問をしたときに性別の列を見ていただけで、適応するのが最も簡単でした。私は、達成しようとしていたことの概念を説明したかっただけです。 –

+0

確かに!この種のものが設計文書の中で化石化される前に、ただあなたを見て、決して変更することはありません。 – tadman

答えて

1

MySQLでフィールド名を変数として設定する方法はありますか?

いいえ、SQLでは、スキーマ、表、または列名に変数を使用できません。

テキスト文字列処理を使用してクエリを作成してから実行できるようにするには、回避策があります。このようなものが助けになるかもしれません。

PREPARE query 
    FROM CONCAT ('select * from table_name', 
       'where find_in_set(table_name.gender_column, ' 
       @variable, 
       ');' 
      ); 

EXEC query; 

DEALLOCATE PREPARE query; 

これは、あなたが欲しいことをするラウンドアバウトの方法かもしれません。技術用語は「大きな脂肪の毛髪」です。

+0

お返事ありがとうございます。明日の朝、オフィスでこれを試してみてください。再度、感謝します。 –

関連する問題