본문 바로가기
DataBase

[SQL]컬럼 데이터 타입 변경

by 바까 2021. 9. 25.
반응형
--컬럼 데이터 타입 변경
기존에 존재하는 테이블에 컬럼의 데이터 타입을 변경할 수 있다.



--실습준비
DROP TABLE ASSETS; 
CREATE TABLE ASSETS (
  ID SERIAL PRIMARY KEY
, NAME TEXT NOT NULL
, ASSET_NO VARCHAR(10) NOT NULL
, DESCRIPTION TEXT
, LOCATION TEXT
, ACQUIRED_DATE DATE NOT NULL
);
 

INSERT INTO ASSETS (
  NAME
, ASSET_NO
, LOCATION
, ACQUIRED_DATE
)
VALUES
('Server', '10001', 'Server room', '2017-01-01'), 
('UPS', '10002', 'Server room', '2017-01-02');

COMMIT; 

SELECT * FROM ASSETS; 

--name 컬럼의 데이터 타입 변경(text 였음)
ALTER TABLE ASSETS ALTER COLUMN NAME TYPE VARCHAR(50);

--한번에 여러개 변경
ALTER TABLE ASSETS 
    ALTER COLUMN LOCATION TYPE VARCHAR(100),
    ALTER COLUMN DESCRIPTION TYPE VARCHAR(500);

--원래 varchar 였건 것을 int 형으로 변경하려고했으나 실패함
ALTER TABLE ASSETS ALTER COLUMN ASSET_NO TYPE INT;   

SQL Error [42804]: 오류: "asset_no" 칼럼의 자료형을 integer 형으로 형변환할 수 없음
  Hint: "USING asset_no::integer" 구문을 추가해야 할 것 같습니다.
  ;
--해결 방법 USING ASSET_NO::INTEGER을 사용
ALTER TABLE ASSETS
    ALTER COLUMN ASSET_NO TYPE INT USING ASSET_NO::INTEGER;
반응형

'DataBase' 카테고리의 다른 글

[SQL]테이블 제거  (0) 2021.09.25
[SQL]컬럼 이름 변경  (0) 2021.09.25
[SQL]칼럼 제거  (0) 2021.09.25
[SQL]칼럼 추가  (0) 2021.09.25
[SQL]테이블 이름 변경  (0) 2021.09.25

댓글