varchar 열의 최대 길이를 변경 하시겠습니까?


188

내용을 잃지 않고 varchar 열의 길이를 255 자에서 500으로 업데이트하려고합니다. 전에 테이블을 삭제하고 다시 만들었지 만이 작업을 수행하는 데 사용해야하는 alter 문에 노출 된 적이 없습니다. ALTER TABLE (Transfact-SQL) 문서를 찾았 지만 머리 나 꼬리를 만들 수는 없습니다.

지금까지 다음과 같은 내용이 있습니다 (불행히도 아무것도 없습니다).

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

어떻게 접근합니까? 이 진술에 대한 더 나은 문서가 있습니까? (예제를 검색했지만 비워 두었습니다)?

답변:


362

당신은 필요

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

그러나 NOT NULL원하는 경우 명시 적 으로 지정 해야합니다.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

아래와 같이 지정하지 않으면 ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

그러면 열이 원래로 정의되어 있어도 기본적으로 null을 허용 NOT NULL합니다. 즉, 사양을 생략하면 ALTER TABLE ... ALTER COLUMN항상으로 취급됩니다.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

이 동작은 ALTER TABLE(또는 CREATE TABLE시간에) 생성 된 새 열에 사용 된 동작과 다릅니다 . 기본 null 허용 여부는 ANSI_NULL_DFLT설정에 따라 다릅니다 .


여기에 '[NOT] NULL'을 추가하는 목적을 설명해 주시겠습니까? 왜 대답에 Mitch 's가 없는지 궁금해합니까?
Michael A


[NOT NULL]은 NULL 값을 열에 넣을 수 없도록 지정합니다.
Michael A

3
@Michael-대괄호가 없으면 그렇습니다. 대괄호는 구문 비트가 선택 사항임을 나타냅니다. 생략하면 허용 NULL이 기본값입니다.
Martin Smith

1
ALTER COLUMN MY_COL SET 데이터 유형 VARCHAR (100)
Kdean571 2016 년

26

열 크기를 늘려도 ALTER데이터가 손실되지 않습니다.

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

@Martin이 지적했듯이 명시 적으로 지정해야합니다. NULL | NOT NULL


14

당신은 사용할 수 있습니다 modify:

ALTER TABLE `table name` 
modify COLUMN `column name` varchar("length");

4
그것은 이미 게시 된 것입니다. 공유하고 싶은 새로운 것이 있습니까?
니코 하세

그것은 잘못된 장소에, 그래서 또한 그것은 MySQL의 작동이 질문은 [TSQL]을 태그가
진은

6
수정은 새로운 기능입니다. ALTER COLUMN에서 구문 오류가 발생했지만 MODIFY COLUMN이 문제없이 작동했습니다.
KGBird

@KGBird-SQL Server를 사용하지 않기 때문입니다. MODIFY이 질문에 관한 것 이외의 다른 데이터베이스 시스템의 구문입니다
Martin Smith

1

IntelliJ에서 Maria-DB 및 DB-Navigator 도구를 사용하여 MODIFY ColumnAlter Column 대신 나를 위해 일했습니다.


2
이 게시물은 @Mitch Wheat이 1 월 12 '12의 1:37에 제공 한 답변에 어떤 새로운 내용을 추가합니까?
scopchanov

1
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

질문에 늦었지만 Oracle SQL Developer를 사용 하고 있으며 @anonymous의 답변이 가장 가깝지만 쿼리를 편집 할 때까지 구문 오류가 계속 발생했습니다.

이것이 누군가를 돕기를 바랍니다.


(변경하도록 변경되었으며 column_name을 열로 정의 할 필요가 없음)
Jett

0

나는 또한 의심의 여지가 있었고, 나를 위해 일한 것은

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  

0

이것은 db2에서 나를 위해 일했습니다.

alter table "JOBS"  alter column "JOB_TITLE" set  data type varchar(30);

0

대안으로, 기존 데이터를 저장하고 새 매개 변수를 사용하여 새 테이블을 작성할 수 있습니다.

이미지 참조

SQL Server Management Studio에서 : "사용자 데이터베이스"=> 작업 => generatescripts => 특정 데이터베이스 개체 선택 => "테이블"=> 고급 => 스크립트 할 데이터 유형-스키마 및 데이터 => 생성

개인적으로 나는 그렇게했다.


-1

MariaDB의 경우 modify 열을 사용하십시오 .

ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR (500);

작동합니다.


문제는 SQL 서버에 관한 것입니다
Martin Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.