Dalam peralihan daripada SQL Server ke MySQL 5.1, cabaran timbul apabila cuba mencipta jadual dengan sedikit lajur menggunakan pernyataan pilih. Pendekatan intuitif menghantar lajur integer kepada sedikit, seperti yang dilihat dalam contoh berikut, gagal:
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
MySQL menyatakan ketidaksetujuan pada percubaan untuk menghantar ke bit, menimbulkan persoalan: Bagaimana kita boleh mengarahkannya untuk anggap lajur integer yang mengandungi hanya 0s dan 1s sebagai sedikit?
Malangnya, tiada penyelesaian langsung. Fungsi CAST dan CONVERT dalam MySQL 5.1 menyokong penghantaran hanya kepada jenis data tertentu, tidak termasuk BIT dan jenis integer yang berkaitan.
Walaupun terhad, adalah mungkin untuk mencipta tersuai berfungsi untuk melakukan tuangan. Begini caranya:
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END $$
Untuk mengesahkan kefungsian fungsi cast_to_bit, paparan boleh dibuat:
CREATE VIEW view_bit AS SELECT cast_to_bit(0), cast_to_bit(1), cast_to_bit(FALSE), cast_to_bit(TRUE), cast_to_bit(b'0'), cast_to_bit(b'1'), cast_to_bit(2=3), cast_to_bit(2=2)
Memeriksa paparan dengan DESCRIBE mendedahkan bahawa semua nilai telah ditukar kepada bit(1).
Atas ialah kandungan terperinci Bagaimana untuk Berjaya Menghantar INT ke BIT dalam MySQL 5.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!