Beim Übergang von SQL Server zu MySQL 5.1 entsteht eine Herausforderung, wenn versucht wird, eine Tabelle mit einem Bit zu erstellen Spalte mithilfe einer Select-Anweisung. Der intuitive Ansatz, eine Integer-Spalte in ein Bit umzuwandeln, wie im folgenden Beispiel zu sehen ist, schlägt fehl:
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
MySQL missbilligt Versuche, eine Integer-Spalte in ein Bit umzuwandeln, und wirft die Frage auf: Wie können wir es anweisen? Eine Ganzzahlspalte, die nur Nullen und Einsen enthält, als Bit behandeln?
Leider gibt es keine direkte Lösung. Die CAST- und CONVERT-Funktionen in MySQL 5.1 unterstützen die Umwandlung nur in bestimmte Datentypen, ausgenommen BIT und verwandte Ganzzahltypen.
Trotz der Einschränkung ist es möglich, eine benutzerdefinierte zu erstellen Funktion zum Durchführen des Castings. So geht's:
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END $$
Um die Funktionalität der cast_to_bit-Funktion zu bestätigen, kann eine Ansicht erstellt werden:
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)
Die Untersuchung der Ansicht mit DESCRIBE zeigt dass alle Werte in Bit(1) konvertiert wurden.
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL 5.1 erfolgreich INT in BIT umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!