Mysql mengubah tipe kolom dari varchar ke int

Pernyataan

Query OK, 0 rows affected (0.11 sec)
5 memodifikasi kolom pada tabel yang ada. Modifikasi dapat mencakup mengubah tipe data dan atribut. Untuk mengganti nama pada saat yang sama, gunakan pernyataan
Query OK, 0 rows affected (0.11 sec)
6 sebagai gantinya

Sejak v5. 1. 0, TiDB telah mendukung perubahan tipe data untuk data Reorg, termasuk namun tidak terbatas pada

  • Mengubah
    Query OK, 0 rows affected (0.11 sec)
    
    7 menjadi
    Query OK, 0 rows affected (0.11 sec)
    
    8
  • Memodifikasi presisi
    Query OK, 0 rows affected (0.11 sec)
    
    _9
  • Mengompresi panjang
    INSERT INTO t1 (col1) VALUES (1),(2),(3),(4),(5);
    
    _0 menjadi
    INSERT INTO t1 (col1) VALUES (1),(2),(3),(4),(5);
    
    1

Ringkasan

AlterTableStmtALTERIGNORETABLETableNameModifyColumnSpec,ModifyColumnSpecMODIFYColumnKeywordOptIF EXISTSColumnNameColumnTypeColumnOptionFIRSTAFTERColumnNameColumnTypeNumericTypeStringTypeDateAndTimeTypeSERIALColumnOptionNOTNULLAUTO_INCREMENTPRIMARYKEYCLUSTEREDNONCLUSTEREDUNIQUEKEYDEFAULTNowSymOptionFractionSignedLiteralNextValueForSequenceSERIALDEFAULTVALUEONUPDATENowSymOptionFractionCOMMENTstringLitCONSTRAINTIdentifierCHECK(Expression)NOTENFORCEDNULLGENERATEDALWAYSAS(Expression)VIRTUALSTOREDREFERENCESTableName(IndexPartSpecificationList)MatchOnDeleteUpdateOptCOLLATECollationNameCOLUMN_FORMATColumnFormatSTORAGEStorageMediaAUTO_RANDOM(LengthNum)ColumnNameIdentifier. Pengenal. Pengenal

AlterTableStmt
         ::= 'ALTER' 'IGNORE'? 'TABLE' TableName ModifyColumnSpec ( ',' ModifyColumnSpec )*

ModifyColumnSpec
         ::= 'MODIFY' ColumnKeywordOpt 'IF EXISTS' ColumnName ColumnType ColumnOption* ( 'FIRST' | 'AFTER' ColumnName )?

ColumnType
         ::= NumericType
           | StringType
           | DateAndTimeType
           | 'SERIAL'

ColumnOption
         ::= 'NOT'? 'NULL'
           | 'AUTO_INCREMENT'
           | 'PRIMARY'? 'KEY' ( 'CLUSTERED' | 'NONCLUSTERED' )?
           | 'UNIQUE' 'KEY'?
           | 'DEFAULT' ( NowSymOptionFraction | SignedLiteral | NextValueForSequence )
           | 'SERIAL' 'DEFAULT' 'VALUE'
           | 'ON' 'UPDATE' NowSymOptionFraction
           | 'COMMENT' stringLit
           | ( 'CONSTRAINT' Identifier? )? 'CHECK' '(' Expression ')' ( 'NOT'? ( 'ENFORCED' | 'NULL' ) )?
           | 'GENERATED' 'ALWAYS' 'AS' '(' Expression ')' ( 'VIRTUAL' | 'STORED' )?
           | 'REFERENCES' TableName ( '(' IndexPartSpecificationList ')' )? Match? OnDeleteUpdateOpt
           | 'COLLATE' CollationName
           | 'COLUMN_FORMAT' ColumnFormat
           | 'STORAGE' StorageMedia
           | 'AUTO_RANDOM' ( '(' LengthNum ')' )?

ColumnName ::=
    Identifier ( '.' Identifier ( '.' Identifier )? )?

Contoh

CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
Query OK, 0 rows affected (0.11 sec)
INSERT INTO t1 (col1) VALUES (1),(2),(3),(4),(5);
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0
ALTER TABLE t1 MODIFY col1 BIGINT;
Query OK, 0 rows affected (0.09 sec)
SHOW CREATE TABLE t1\G;
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `col1` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=30001
1 row in set (0.00 sec)

Perubahan Reorg-Data

CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
Query OK, 0 rows affected (0.11 sec)
CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
1
CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
2
CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
3
CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
4
SHOW CREATE TABLE t1\G;
CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
6

  • TiDB mengembalikan kesalahan saat tipe data yang diubah bentrok dengan baris data yang ada. Dalam contoh di atas, TiDB mengembalikan kesalahan berikut

    CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
    
    _7
  • Karena kompatibilitas dengan fitur Async Commit, pernyataan DDL menunggu beberapa saat (sekitar 2. 5s) sebelum memulai proses menjadi Reorg Data

    CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
    
    _4

Kompatibilitas MySQL

  • Tidak mendukung modifikasi tipe Reorg-Data pada kolom primary key tetapi mendukung modifikasi tipe Meta-Only. Sebagai contoh

    CREATE TABLE t1 (id int not null primary key AUTO_INCREMENT, col1 INT);
    
    _9
    Query OK, 0 rows affected (0.11 sec)
    
    0
    Query OK, 0 rows affected (0.11 sec)
    
    1
  • Tidak mendukung pengubahan jenis kolom pada kolom yang dihasilkan. Sebagai contoh

    Query OK, 0 rows affected (0.11 sec)
    
    _2
  • Tidak mendukung pengubahan jenis kolom pada tabel yang dipartisi. Sebagai contoh

    Query OK, 0 rows affected (0.11 sec)
    
    _3
  • Tidak mendukung modifikasi beberapa tipe data (misalnya, beberapa tipe TIME, Bit, Set, Enum, JSON) tidak didukung karena beberapa masalah kompatibilitas perilaku fungsi

    INSERT INTO t1 (col1) VALUES (1),(2),(3),(4),(5);
    
    2 antara TiDB dan MySQL

    Bagaimana cara mengubah kolom varchar menjadi int di MySQL?

    Untuk mentransmisikan VARCHAR ke INT, kita dapat menggunakan fungsi cast() dari MySQL . Berikut adalah sintaks dari fungsi cast(). Sebagai contoh kita akan membuat tabel dengan bantuan perintah create. Tampilkan semua rekaman dengan bantuan pernyataan pilih.

    Bagaimana cara mengubah kolom varchar menjadi int di SQL?

    Metode CAST() dan CONVERT() SQL Server dapat digunakan untuk mengonversi VARCHAR ke INT. .
    tipe data. Tipe data yang valid tempat fungsi akan menampilkan ekspresi
    ekspresi. Nilai untuk dilemparkan
    gaya. Adalah bilangan bulat yang disediakan yang menentukan bagaimana fungsi akan menerjemahkan ekspresi

    Bagaimana cara mengubah tipe data kolom di MySQL?

    Berikut adalah sintaks untuk mengubah tipe data kolom di MySQL. .
    ALTER TABLE table_name
    MODIFIKASI tipe data nama_kolom;

    Bisakah kita mengonversi varchar ke int di SQL?

    Contoh di bawah ini menunjukkan konversi string ke tipe int. Variabel varchar dan variabel int dideklarasikan, kemudian nilai variabel varchar ditetapkan. Itu mengubah varchar menjadi tipe int dengan bantuan fungsi cast dan convert. Variabel varchar harus berisi karakter numerik