10
votes

Quel est le type de données pour stocker la valeur booléenne dans MySQL?

Duplicaté possible:

quel type de type MySQL à utiliser pour stocker des valeurs booléennes?

Je suis un programmeur .NET et utilisez la base de données MySQL pour la première fois de ma vie.

Je voulais stocker la valeur booléenne, MySQL a bit , mais la conversion .NET de ce type de données est uint64 . .

Il y a un autre type de données tinyint (1) , dont l'équivalent .net est <-code> system.booleren qui servira mon objectif.

Mais pourquoi vais-je utiliser tinyint (1) (qui peut stocker la valeur comme 123, 22) au lieu de bit et il prendra plus d'espace que bit aussi (je suppose) ? Il peut être légal de l'utiliser mais je ne pense pas qu'il soit étique.

Quelqu'un peut-il aider et clarifier mon doute?


2 commentaires

Qu'entendez-vous par «la conversion» .net '? Comment convertissez-vous vos valeurs de DB en types .NET? Si vous convertissez manuellement, vous ne pouvez pas utiliser: convert.toboolooan (lecteur [«Nom de colonne»]) Ceci devrait convertir la valeur du bit en un problème Boolean.


Si vous prenez des digne d'information et que vous faites la conversion ci-dessus, cela fonctionne bien. Mais si vous poursuivez votre datatable et essayez de faire la conversion, cela ne fonctionne pas.


3 Réponses :


1
votes

Selon le manuel MySQL, vous pouvez utiliser Bool et Boolean qui sont au moment des alias de Tinyint (1):

Référence: Quelles données MySQL Type à utiliser pour stocker des valeurs booléennes

similaires au type de données de bits MS SQL : xxx


0 commentaires

2
votes

bit ne fonctionne pas comme vous le pensez, il est généralement utilisé pour stocker bitfields et bit (m) prend environ (m + 7) / 8 (arithmétique entier) octets de stockage. Utilisation du bit (1) prend toute une octet de toute façon, la même chose que tinyint ne vous inquiétez pas.

Si vous êtes intéressé, les exigences de stockage pour différents types sont situées Ici .


0 commentaires

8
votes

mySQL a bool et booléen, mais ils sont synonymes de Tinyint (1). Une valeur de zéro est considérée comme fausse. Les valeurs non nulles sont considérées comme vraies. Je suppose que quelqu'un à MySQL pensa à ce sujet et décidé que Tinyint (1) est la voie préférée d'aller. J'ai toujours utilisé cela moi-même.

Il y a d'autres informations dans cette question similaire: Quelle est la différence entre Bit et Tinyint dans MySQL?


0 commentaires