2011-01-13 2 views
1

이 SQL 서버에 2008TSQL : SQL Server에서 숫자 열을 변경하면 값이 어떻게 변환됩니까?

내가 열이 item_amount라고 예를 들어 내가 varcharmoneydecimal에서 변환 할 여러 열을 가지고있다.

  • 이 값들은 어떻게 변환됩니까?

    convert(varchar, item_amount)과 같습니까? select item_amount, convert(varchar, item_amount) from <table>과 같은 쿼리를 실행하면 열이 동일하게 렌더링되므로 기대하고 싶습니다.

  • 가능한 절단에서 안전해야합니까? 맞습니까?

    varchar 열에 충분한 문자가 있다고 가정합니다 (소수점의 경우 max precision for a decimal column is 38 + 1 문자이므로 39가됩니다). 숫자 값 중 어느 것도 38 자리에 가깝지 않으며, 대부분 3-5 범위에 있습니다.

  • 나는이 명령을 테스트 테이블에서 성공적으로 실행했고 나를 괴롭 히거나 잊어 버리지 않을 것임을 확인하고 싶다 : alter table <mytable> alter column item_amount varchar(39) default '0' (이것은 기존 기본 ((0)) 제약 조건을 삭제 한 후이다.).

답변

2

변환 할 때의 VARCHAR 열에 올바른 문자 수를 지정하면 올바른 것으로 간주됩니다.

varchar 로의 금액 변경과 관련하여 변환을 수행하므로 여기에 문제가 없습니다.

필자는 더 이상 정렬, 필터링 등의 작업을 수행 할 필요가 없으므로이 작업을 수행하는 것이 좋지 않다는 점에 유의해야합니다. 다만 메모입니다.

+1

제약 조건의 이름을 지정하는 부작용은 ... varchar (39) 제약 조건 df_tblname_colname default '0'... 당신이 (0)에 대해 가지고 있던 것처럼 깨끗하고 쉽게 삭제되도록 유지합니다. 다른 문제는 십진수/돈이 오른쪽에 0- 채우기와 함께 전체 크기로 확장된다는 것입니다. 그게 당신이 무엇인지 확실하지 않은 경우 – RichardTheKiwi

+0

그레이트 추천! –

+0

본능은 틀리지 않지만 기본적으로 ETL 프로세스에서 가져 오기 준비 테이블입니다. 변환 스크립트는 프로덕션 테이블로 데이터를 이동할 때 convert()를 적절한 숫자 유형으로 수행합니다. –