Pemilihan Nama Medan Dinamik dalam MySQL
Dalam MySQL, adakah mungkin untuk memilih medan berdasarkan nama medan dinamik yang disimpan sebagai rentetan ?
Asal Soalan:
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 ;
Jawapan:
Sama ada mungkin untuk memilih medan secara dinamik berdasarkan rentetan bergantung pada tempat rentetan itu berada.
Rentetan dalam Aplikasi Luaran:
Jika rentetan nama medan berada dalam aplikasi luaran anda, membina pernyataan MySQL adalah mudah.
String dalam Jadual MySQL:
Walau bagaimanapun, jika rentetan nama medan disimpan dalam jadual MySQL, memilih secara langsung adalah mustahil. MySQL tidak mempunyai fungsi penilaian seperti eval(). Operasi ini tidak boleh dilakukan menggunakan pendekatan berikut:
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
Menggunakan Penyata Disediakan:
Sebagai penyelesaian, anda boleh menggunakan pernyataan yang disediakan, tetapi berhati-hati kerana ia pendekatan godam.
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
Atas ialah kandungan terperinci Bolehkah MySQL Memilih Medan Menggunakan Nama Medan Dijana Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!