Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-19 16:44:02
original
268 Les gens l'ont consulté

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 ; 
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal