Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Berjaya Menghantar INT ke BIT dalam MySQL 5.1?

Bagaimana untuk Berjaya Menghantar INT ke BIT dalam MySQL 5.1?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 20:49:30503semak imbas

How to Successfully Cast INT to BIT in MySQL 5.1?

Menghantar INT ke BIT dalam MySQL 5.1: Tugas Yang Mustahil

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?

Keterbatasan Casting

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.

Fungsi Tersuai untuk Menyelamat

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
$$

Pengesahan Visual

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn