Jadi saya mencipta jadual dengan semua varchar(255) dan kemudian memutuskan untuk menggunakan CAST untuk menukarnya kepada UNSIGNED (kerana semua nilai adalah positif). Apabila saya menyemak, ia telah ditukar kepada tidak ditandatangani. Walau bagaimanapun, saya perhatikan bahawa apabila saya menyemak keseluruhan jadual sekali lagi, lajur masih dianggap sebagai varchar.
Pemahaman saya ialah CAST hanya berfungsi pada kod tertentu dan tidak mengubahnya secara kekal. Jika saya ingin menukar jenis lajur secara kekal, adakah saya perlu menggunakan ALTER seperti yang ditunjukkan di bawah?
Jika ya, mengapa orang menggunakan CAST dan bukannya 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 ;
CAST hanya mengubah hasil ungkapan dalam pertanyaan. Jika anda hanya mahu menukarnya kepada integer tidak bertanda kadangkala, tanpa mengubah cara data disimpan, anda boleh menggunakan CAST.
Jika anda ingin menukar cara data disimpan, anda perlu menggunakan ALTER TABLE.
Andaikan MatchID anda diwakili sebagai nombor hanya untuk padanan tertentu. Dalam pertandingan lain, pertandingan dikenal pasti dengan rentetan abjad. Dalam kes ini, lajur mestilah varchar kerana lajur mesti disimpan dengan jenis data yang sama pada semua baris dalam jadual tertentu. Jangan ubah suai jadual kerana ini akan menyebabkan semua rentetan bukan angka ditukar kepada setara angka 0.