데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

테이블 칼럼(column)의 타입을 변경하려고 하는데 재밌(?)는 현상이 있습니다...

일단 테이블을 생성한다.

create table test(
  id varchar(10)
 )

그리고 id의 타입을 varbinary로 변경하려하면 오류가 발생합니다.

alter table test alter column id varbinary(100)

데이터 형식 varchar을(를) varbinary(으)로 암시적으로 변환할 수 없습니다. CONVERT 함수를 사용하여 이 쿼리를 실행하십시오.

 

그래서  alter table test alter column id convert(varbinary(100), id)  라고 해 봤는데 역시 convert가 잘못됐다고 오류 발생.

 

그래서 할 수 없이 아래와 같이 합니다.

1. varbinary 임시 칼럼(id_temp) 하나 추가

2. 기존 칼럼(id) 삭제

3. sp를 사용해 임시칼럼 이름 변경(id_temp -> id)

exec sp_rename 'dbo.test.id_temp', 'id', 'column'

위 sp를 사용하면 다음과 같은 경고문구가 나온다.

주의: 개체 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있습니다.

 

왠지 복잡한 느낌이 듭니다.. 이리저리 하다가 다음과 같은 방법을 찾았습니다. 더 간단합니다.

1. alter table test alter column id int      -- int로 변경한다.

2. alter table test alter column id varbinary(100)  -- int를 varbinary로 변경한다.

아주 간단합니다. 칼럼 순서도 안바뀌고.. 사실 칼럼 순서가 안바뀌는 것이 굉장히 중요합니다.

 

그래서 왜 varchar에서 varbinary로 집접 변환은 안되고 int를 거치면 변환이 되는지 궁금합니다.

그리고 위의 방법(추가->삭제->변경)보다 이 방법이 훨신 깔끔한데 어느 방법이 정석인지요?

 

sql server2005, sql server2008 둘다 동일한 현상입니다.

감사합니다.

 

 

No. Subject Author Date Views
6578 특정 컬럼 값을 기준으로 열을 행으로... [1] 곰단지 2013.03.20 7930
6577 통계쿼리문의드립니다. [2] 사이비 2013.03.20 28424
6576 쿼리 하나 질문 드립니다. 로그 데이터 조회.. [3] 따개비 2013.03.19 6050
6575 쿼리 질문 드립니다. [4] 한만정덩 2013.03.19 6352
6574 SQL2008 R2 --> 보고서 출력 [2] 미음이 2013.03.19 10091
6573 쿼리 질문 드립니다. [1] 한만정덩 2013.03.19 6420
6572 쿼리문 질문 좀 드립니다. [1] 이병권 2013.03.18 6183
6571 Linked 서버 with(nolock) 옵션 [5] dunhill123 2013.03.18 9318
6570 테이블 이전 관련 질문입니다. [2] 김락중_278785 2013.03.18 6133
6569 급한질문입니다 SQL2008 R2 설치문제입니다... [1] kokuri 2013.03.18 9154
6568 min, max, avg 쿼리관련 질문입니다. [3] 초보는힘들어 2013.03.17 8984
6567 쿼리질문이요(일련번호별로 사용자ID별 갯수만큼 자동으로 찍어주는부분) [2] 무뚝이 2013.03.17 7065
6566 쿼리질문이요(일련번호별로 그룹에 해당하는 사용자ID를 자동할당) [2] 무뚝이 2013.03.16 6711
6565 오류 : 18456 심각도 :14 상태 :10 도와주세요 ㅠ [1] 야구소년 2013.03.15 10600
6564 고스트 복구 후 SQL서버 2012가 안돌아가네요. [2] 사야오빠 2013.03.15 7342
6563 테이블에서 특정값 빼는 쿼리 [3] q0822kang 2013.03.14 7764
6562 tempdb 관련 문의 드려요. [2] 수노 2013.03.14 6980
6561 인덱스조각모음 효과를 확인해보고싶어요... [3] Sisylian 2013.03.14 7115
6560 난감한상황... 소트를 하지 않고 빼야하는 상황입니다. [2] 흑풍전설 2013.03.14 6422
6559 데이터 가져오기 관련 질문. [1] 형님 2013.03.13 6322





XE Login