在这里使用Alter与使用Cast相比,是否是不正确的选择?
P粉176203781
P粉176203781 2023-09-13 17:14:57
0
1
531

所以我创建了一个包含所有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粉176203781
P粉176203781

全部回复(1)
P粉004287665

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板