搜尋

首頁  >  問答  >  主體

在這裡使用Alter與使用Cast相比,是否是不正確的選擇?

所以我建立了一個包含所有varchar(255)的表,然後決定使用CAST將其更改為UNSIGNED(因為所有值都是正數)。當我檢查時,它已經更改為unsigned。然而,我注意到當我再次檢查整個表時,列仍然被視為varchar。

我的理解是,CAST只對特定的程式碼起作用,不會永久更改。如果我想永久更改列類型,需要使用下面所示的ALTER嗎?

如果是這樣,為什麼人們使用CAST而不是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粉176203781446 天前535

全部回覆(1)我來回復

  • P粉004287665

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

    CAST只會改變查詢中表達式的結果。如果您只想有時將其變更為無符號整數,而不變更資料儲存方式,可以使用CAST。

    如果要變更資料儲存方式,則需要使用ALTER TABLE。

    假設您的MatchID僅對某些比賽表示為數字。在其他比賽中,比賽透過字母字串進行標識。在這種情況下,列必須是varchar,因為在給定表中的所有行上,列必須以相同的資料類型儲存。不要修改表格,因為這將導致所有非數字字串被更改為它們的數字等效值0。

    回覆
    0
  • 取消回覆