SQL Server의 열을 int 유형에서 열 이름을 유지하면서 텍스트를 입력하려면 변경하고 싶습니다. 이 열이있는 표에는 많은 양의 데이터가 있으며 그 데이터를 잃고 싶지 않습니다. SQL Server는 int에서 텍스트로의 암시 적 또는 명시 적 형 변환을 지원하지 않는 것 같습니다. 그렇지 않으면 매우 간단합니다. 그렇다면 SQL 만 사용하면 어떻게됩니까?SQL Server에서 텍스트를 입력 할 int 형식의 열
답변
MS SQL Server (대부분의 데이터베이스와 마찬가지로)는 기존 열의 유형을 직접 변경하는 것을 지원하지 않으므로 단계적으로 변경해야합니다. 내가되어 과거에이 같은 문제를 해결 한 방법 (테이블 가정은 'foo는'이름과 열은 '바'이다) :
ALTER TABLE foo ADD COLUMN tempbar text;
UPDATE foo SET tempbar = cast(cast(bar as varchar) as text);
ALTER TABLE foo DROP COLUMN bar;
ALTER TABLE foo ADD COLUMN bar text;
UPDATE foo SET bar = tempbar;
ALTER TABLE foo DROP COLUMN tempbar;
(SQL 구문의 일부가 꺼져있을 수 있습니다, 그것은이었다 마지막으로 다른 일을 한 지 1 년이 지났기 때문에 MS SQL Server 나 소스에 액세스 할 수 없으며 열에 인덱스가 있으면 더 많은 작업을해야합니다.
Props에서 Donnie으로 변환 구문을 사용합니다.
Tom H.는 (단계 4-6 대신) tempbar
bar
으로 이름을 변경하기 sp_rename 저장 프로 시저를 사용하여 제안
[편집]. 이것은 여러 상황에서 작동 할 수있는 MS SQL Server 전용 솔루션입니다. 내가 설명한 솔루션 SQL 데이터베이스에 버전에 관계없이 (구문 수정) 함께 작동합니다. 필자는 단일 필드뿐만 아니라 기본 키와 외래 키를 다루었 기 때문에 신중하게 모든 작업을 주문하고 여러 버전의 MS SQL Server에 이식 할 수 있어야했습니다.
대신 막대를 삭제하고 다시 추가 한 다음 막대를 채우는 대신 방금 삭제하고 임시 막대의 이름을 바꿀 수 있습니다. –
sp_rename은 Sql CE에서 작동하지 않습니다. – Edgar
여기 가능한 방법에 표시하는 작은 샘플 스크립트입니다 :
create table test (id int)
create table test_tmp (id ntext)
insert into test
values (1)
insert into test
values (2)
insert into test_tmp
select convert(ntext,cast(id as nvarchar)) from test
drop table test
exec sp_rename 'test_tmp','test'
은 기본적으로 우리가 테이블의 복사본을 만든 다음 채 웁니다. 먼저 int를 nvarchar로 변환 한 다음 텍스트 값으로 가져옵니다. 마지막으로 이전 테이블을 삭제하고 임시 테이블의 이름을 바꿉니다.
- 1. SQL Server에서 부동 열과 Int 열 정렬
- 2. SQL Server에서 int 값 읽기 및 증가
- 3. SQL Server에서 열 기본값으로 사용되는 함수 수정
- 4. 생성 기간 이후에 SQL Server에서 열 삭제
- 5. 열 머리글을 사용하여 SQL Server에서 Excel로 내보내기?
- 6. SQL Server에서 별칭 생성
- 7. 특정 형식의 텍스트를 grep 할 수 없습니다.
- 8. SQL Server 서명 된 int int 이진 (4)
- 9. AS3 입력 텍스트 필드는 모든 줄마다 \ n 형식의 텍스트를 가져옵니다.
- 10. SQL Server에서 트리거 만들기
- 11. SQL Server에서 LIKE 연산자
- 12. SQL Server에서 money 데이터 형식의 소수점 두 개만 가져옵니다.
- 13. SQL Server에서 불안정한 쿼리
- 14. SQL 테이블의 열 텍스트를 바꾸는 방법은 무엇입니까?
- 15. SQL의 가변 길이 int 열
- 16. 다른 언어를 저장할 때 SQL Server에서 텍스트를 검색하는 방법
- 17. SQL Server에서 일치하는 단어
- 18. 문자열 형식의 DataTable 열
- 19. SQL Server에서 열 데이터를 추가하는 방법은 무엇입니까? 제품이 동일 할 때 SQL Server 2008의
- 20. SQL Server에서 시간대를 변환 할 수 있습니까?
- 21. SQL Server에서 열 데이터 형식을 가장 빨리 변경하는 방법
- 22. 필드가 아닌 SQL Server에서 데이터 형식 정의 열
- 23. SQL Server에서 두 열 간의 데이터 교환이 어떻게 작동합니까?
- 24. 입력 할 때 텍스트를 복사하기위한 단축키
- 25. SQL Server에서 다른 테이블의 열 이름을 사용하여 행을 비교하는 방법
- 26. SQL Server에서 별개의 지옥을 선택하십시오
- 27. SQL Server에서 varchar에서 int 데이터 형식으로 열을 변환 할 수 있습니까
- 28. IE6의 입력 필드에 텍스트를 입력 할 수 없습니까?
- 29. SQL Server에서 사용자 입력 정밀도로 소수 자릿수를 저장하고 반환하십시오.
- 30. MS SQL Server에서 sqlalchemy를 사용하여 varbinary (max) 열 정의
'text'또는 'varchar'? –
문제를 해결하는 데 도움이되는 몇 가지 답변이 있지만 텍스트 데이터 형식에 "gotchas"가 많이 있다는 점을 추가하고 싶습니다. VARCHAR (MAX) 또는 NVARCHAR (MAX)를 사용하면 SQL 2005 이상에서 사용하는 것이 좋습니다. 그렇지 않은 경우에도 매우 큰 VARCHAR 또는 NVARCHAR을 대신 사용해보십시오. –
nvarchar (max) 대신 텍스트를 사용해야하는 이유는 무엇입니까? – DForck42