Maison  >  Questions et réponses  >  le corps du texte

L'utilisation de Alter ici est-elle un choix incorrect par rapport à l'utilisation de Cast ?

J'ai donc créé une table avec tous les varchar(255) puis j'ai décidé d'utiliser CAST pour la changer en UNSIGNED (puisque toutes les valeurs sont positives). Lorsque j'ai vérifié, il avait été modifié en non signé. Cependant, j'ai remarqué que lorsque j'ai vérifié à nouveau l'intégralité du tableau, les colonnes étaient toujours traitées comme des varchar.

Je crois comprendre que CAST ne fonctionne que sur un code spécifique et ne le modifie pas de manière permanente. Si je souhaite modifier définitivement le type de colonne, dois-je utiliser ALTER comme indiqué ci-dessous ?

Si oui, pourquoi les gens utilisent-ils CAST au lieu d'ALTER ?

CREATE table project.worldcup_players (
    MatchID varchar (255),
    Team_Initials varchar (255),
    Coach_Name varchar (255),
    Player_Name varchar (255)
);

SELECT * FROM project.worldcup_players;

SELECT CAST(MatchID AS UNSIGNED) AS MatchID FROM project.worldcup_players;

ALTER TABLE project.worldcup_players 
CHANGE COLUMN `MatchID` `MatchID` INT NULL DEFAULT NULL ;

P粉176203781P粉176203781402 Il y a quelques jours507

répondre à tous(1)je répondrai

  • P粉004287665

    P粉0042876652023-09-14 14:35:15

    CAST modifie uniquement le résultat de l'expression dans la requête. Si vous souhaitez simplement le changer parfois en entier non signé, sans modifier la façon dont les données sont stockées, vous pouvez utiliser CAST.

    Si vous souhaitez modifier la façon dont les données sont stockées, vous devez utiliser ALTER TABLE.

    Supposons que votre MatchID soit représenté sous forme de nombre uniquement pour certaines correspondances. Dans d'autres compétitions, les compétitions sont identifiées par des chaînes alphabétiques. Dans ce cas, les colonnes doivent être varchar car les colonnes doivent être stockées avec le même type de données sur toutes les lignes d'une table donnée. Ne modifiez pas le tableau car cela entraînerait le remplacement de toutes les chaînes non numériques par leur équivalent numérique de 0.

    répondre
    0
  • Annulerrépondre