從SQL Server 過渡到MySQL 5.1 時,嘗試使用位元建立表時會出現挑戰使用select 語句的欄位。將整數列強制轉換為位元的直覺方法(如以下範例所示)失敗了:
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
MySQL 對強制轉換為位元的嘗試表示反對,提出了一個問題:我們如何指示它將僅包含0 和1 的整數列視為一個位元?
不幸的是,沒有直接的解決方案。 MySQL 5.1 中的 CAST 和 CONVERT 函數僅支援轉換為特定資料類型,不包括 BIT 和相關整數類型。
儘管有限制,但可以建立自訂函數函數來執行鑄造。具體方法如下:
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END $$
要確認cast_to_bit 函數的功能,可以建立一個視圖:
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)
使用DESCRIBE 檢查視圖會發現所有值都已轉換為位元(1)。
以上是如何在 MySQL 5.1 中成功地將 INT 轉換為 BIT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!