Maison  >  Article  >  base de données  >  Comment réussir à convertir INT en BIT dans MySQL 5.1 ?

Comment réussir à convertir INT en BIT dans MySQL 5.1 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 20:49:30510parcourir

How to Successfully Cast INT to BIT in MySQL 5.1?

Casting INT en BIT dans MySQL 5.1 : une tâche impossible

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 ?

Les limites de la conversion

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.

Fonction personnalisée à la rescousse

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

Vérification visuelle

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn