Maison > Article > base de données > Comment réussir à convertir INT en BIT dans MySQL 5.1 ?
Lors de la transition de SQL Server vers MySQL 5.1, un défi se pose lorsque l'on tente de créer une table avec un bit colonne à l’aide d’une instruction select. L'approche intuitive consistant à convertir une colonne entière en bits, comme le montre l'exemple suivant, échoue :
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
MySQL exprime sa désapprobation face aux tentatives de conversion en bits, ce qui soulève la question : Comment pouvons-nous lui demander de convertir en bits une colonne entière. traiter une colonne entière contenant uniquement des 0 et des 1 comme un bit ?
Malheureusement, il n'y a pas de solution directe. Les fonctions CAST et CONVERT de MySQL 5.1 prennent en charge la conversion uniquement vers des types de données spécifiques, à l'exclusion de BIT et des types entiers associés.
Malgré la limitation, il est possible de créer une fonction personnalisée fonction pour effectuer le casting. Voici comment :
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END $$
Pour confirmer la fonctionnalité de la fonction cast_to_bit, une vue peut être créée :
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)
L'examen de la vue avec DESCRIBE révèle que toutes les valeurs ont été converties en bit(1).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!