介紹如何在 PostgreSQL 資料庫中修改資料表的欄位類型。

首先建立示範用的資料表,並插入一些測試的資料:

  -- 建立資料表
CREATE TABLE my_table (
  id serial PRIMARY KEY,
  number varchar(10)
);

-- 插入資料
INSERT INTO my_table (number) VALUES ('0102'), ('3029'), ('3921');

查看原始的資料:

-- 查看資料
SELECT * FROM my_table;
id | number
----+--------
  1 | 0102
  2 | 3029
  3 | 3921
(3 rows)

這裡的 number 欄位原來的資料型態是字串(varchar),若要將 number 欄位改為整數(INT),可以使用 ALTER TABLE 指令:

-- 更改欄位資料類型
ALTER TABLE my_table ALTER COLUMN number TYPE INT USING number::integer;

在更改資料型態時,除了以 TYPE 指定新的資料型態之外,還要加上 USING 來指定舊資料轉換的方式,這裡我們指定轉換的方式就是將原來的 number 資料直接轉換為整數(number::integer)。

接著檢查更改資料型態之後的資料表:

-- 查看資料表
\d my_table
Table "public.my_table"
 Column |  Type   | Collation | Nullable |               Default
--------+---------+-----------+----------+--------------------------------------
 id     | integer |           | not null | nextval('my_table_id_seq'::regclass)
 number | integer |           |          |
Indexes:
    "my_table_pkey" PRIMARY KEY, btree (id)

number 已經確實改為 integer 型態了。接著查看轉換之後的資料:

-- 查看資料
SELECT * FROM my_table;
id | number
----+--------
  1 |    102
  2 |   3029
  3 |   3921
(3 rows)

參考資料