Heim  >  Fragen und Antworten  >  Hauptteil

Ist die Verwendung von Alter hier eine falsche Wahl im Vergleich zur Verwendung von Cast?

Also habe ich eine Tabelle mit allen varchar(255) erstellt und dann beschlossen, sie mit CAST in UNSIGNED zu ändern (da alle Werte positiv sind). Als ich es überprüfte, wurde es in „Unsigned“ geändert. Als ich jedoch die gesamte Tabelle erneut überprüfte, bemerkte ich, dass die Spalten immer noch als Varchar behandelt wurden.

Mein Verständnis ist, dass CAST nur mit bestimmtem Code funktioniert und diesen nicht dauerhaft ändert. Wenn ich den Spaltentyp dauerhaft ändern möchte, muss ich ALTER wie unten gezeigt verwenden?

Wenn ja, warum verwenden die Leute CAST anstelle von 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 Tage vor505

Antworte allen(1)Ich werde antworten

  • P粉004287665

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

    CAST只会改变查询中表达式的结果。如果您只想有时将其更改为无符号整数,而不更改数据存储方式,可以使用CAST。

    如果要更改数据存储方式,则需要使用ALTER TABLE。

    假设您的MatchID仅对某些比赛表示为数字。在其他比赛中,比赛通过字母字符串进行标识。在这种情况下,列必须是varchar,因为在给定表中的所有行上,列必须以相同的数据类型存储。不要修改表格,因为这将导致所有非数字字符串被更改为它们的数字等效值0。

    Antwort
    0
  • StornierenAntwort