MySQL での動的フィールド名の選択
MySQL では、文字列として保存された動的フィールド名に基づいてフィールドを選択することは可能ですか?
オリジナル質問:
is it possible to select field which name is string? SELECT 'fieldname' FROM table i need this for trigger to have dynamic field names something like SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
回答:
文字列に基づいてフィールドを動的に選択できるかどうかは、文字列が配置されている場所によって異なります。
外部の文字列アプリケーション:
フィールド名の文字列が外部アプリケーション内にある場合、MySQL ステートメントの構築は簡単です。
MySQL テーブル内の文字列:
ただし、フィールド名の文字列がMySQLテーブルに格納されている場合、直接選択することはできません。 MySQL には eval() のような評価関数がありません。この操作は、次のアプローチでは実行できません:
Suppose you have a table queries with a field columnname that refers to one of the column names in the table mytable. There might be additional columns in queries that allow you to select the columnname you want. INSERT INTO queries (columname) VALUES ("name") SELECT (select columnname from queries) from mytable
プリペアド ステートメントの使用:
回避策として、プリペアド ステートメントを使用できますが、注意が必要です。ハッキーなアプローチです。
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
以上がMySQL は動的に生成されたフィールド名を使用してフィールドを選択できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。