Maison >base de données >tutoriel mysql >MySQL peut-il sélectionner un champ à l'aide d'un nom de champ généré dynamiquement ?

MySQL peut-il sélectionner un champ à l'aide d'un nom de champ généré dynamiquement ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 16:44:02331parcourir

Can MySQL Select a Field Using a Dynamically Generated Field Name?

Sélection dynamique du nom de champ dans MySQL

Dans MySQL, est-il possible de sélectionner un champ en fonction d'un nom de champ dynamique stocké sous forme de chaîne ?

Question originale :

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 ; 

Réponse :

Est-il possible de sélectionner un champ de manière dynamique en fonction d'un La chaîne dépend de l'endroit où se trouve la chaîne.

Chaîne dans une application externe :

Si la chaîne du nom de champ se trouve dans votre application externe, la construction de l'instruction MySQL est simple.

Chaîne dans la table MySQL :

Cependant, si la chaîne du nom de champ est stockée dans une table MySQL, il est impossible de la sélectionner directement. MySQL n'a pas de fonction d'évaluation comme eval(). Cette opération n'est pas possible en utilisant l'approche suivante :

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

Utilisation d'instructions préparées :

En guise de solution de contournement, vous pouvez utiliser des instructions préparées, mais soyez prudent car c'est une approche hacky.

SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);

PREPARE stmt FROM @s;
EXECUTE stmt;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn