SQL Server 데이터 형식 변환 방법

SQL Server 의 일상적인 함수,저장 과정 과 SQL 문 구 는 서로 다른 데이터 형식의 변환 을 자주 사용 합 니 다.SQL Server 에는 두 가지 데이터 변환 형식 이 있 습 니 다.하 나 는 외 현적 데이터 변환 입 니 다.다른 하 나 는 내 현적 데이터 변환 이다.다음은 이 두 가지 데이터 형식 변환 에 대해 간략하게 설명 한다.
1 현식 전환
디 스 플레이 변환 은 특정한 데이터 형식의 표현 식 을 다른 데이터 형식 으로 변환 하 는 것 입 니 다.CAST 와 CONVERT 함 수 를 자주 사용 합 니 다.
 CAST: CAST ( expression AS data_type )
 CONVERT: CONVERT (data_type[(length)], expression [, style])
매개 변수 expression 은 모든 유효한 Microsoft SQL Server 표현 식 입 니 다.data_type 목표 시스템 이 제공 하 는 데이터 형식 은 사용자 가 정의 하 는 데이터 형식 을 사용 할 수 없습니다.
2 내 현적 전환
내 현적 변환 은 사용자 에 게 보이 지 않 으 며 SQL Server 엔진 에서 자동 으로 처 리 됩 니 다.내 현적 변환 은 자동 으로 데 이 터 를 한 데이터 형식 에서 다른 데이터 형식 으로 변환 합 니 다.예 를 들 어 하나의 smallint 변수 가 int 변수 와 비교 하면 이 smallint 변 수 는 비교 하기 전에 암시 적 으로 int 변수 로 변 환 됩 니 다.SQL Server 대상 의 데이터 형식 에서 다른 형식 으로 전환 할 때 일부 내 현적 데이터 형식 변환 은 지원 되 지 않 습 니 다.예 를 들 어 nchar 수 치 는 image 수치 로 바 꿀 수 없습니다.nchar 는 binary 로 만 명시 적 으로 전환 할 수 있 고,binary 로 잠재 적 으로 전환 하 는 것 은 지원 되 지 않 습 니 다.nchar 는 nvarchar 로 명시 적 또는 암시 적 으로 전환 할 수 있 습 니 다.
3.내 현적 전환 의 위험
내 현적 전환 이 편리 할 때 가 있 습 니 다.SQL 스 크 립 트 를 간소화 할 수 있 습 니 다.그러나 이 안 에는 잠재 적 인 위험 이 포함 되 어 있 습 니 다.스 크 립 트 가 처음에 실 행 될 때 모두 정상 적 인 것 이 었 지만 어느 시점 이후 프로그램 에 알 수 없 는 오류 가 발생 할 수 있 습 니 다.다음은 현실 프로젝트 의 예 를 들 어 설명 한다.SQL Server 2008 에는 두 개의 서로 다른 데이터 시트 에서 데 이 터 를 가 져 와 야 하 는 표 가 있 습 니 다.이 두 개의 데이터 시트 는 서로 다른 시스템 에 속 하기 때문에 메 인 키 유형 이 다 릅 니 다.하 나 는 int 형식 이 고 하 나 는 GUID 입 니 다.처음에 이 두 개가 모두 문자 유형 으로 변환 하여 저장 할 수 있다 고 생각 했 습 니 다.그래서 표 에 nvarchar(50)의 혼합 ID 열 을 메 인 키 로 만 듭 니 다.다음 그림 에서 보 듯 이:

처음에 끌 어 온 데 이 터 는 GUID 값 이 없고 모두 INT 형식 으로 전 환 된 데이터 이기 때문에 SQL 스 크 립 트 가 정상적으로 작 동 되 었 으 나 갑자기 한 번 실 행 될 때"nvarchar 값'4C185367-F004-41FE-8A0A-DB4E819B1FF 2'를 데이터 형식 int 로 변환 하 는 데 실 패 했 습 니 다."잘못다음 그림 에서 보 듯 이:

스 크 립 트 를 찾 습 니 다.실 행 된 SQL 은 다음 과 같 습 니 다.
혼합 ID=305 dbo.Demo 에서*를 선택 하 십시오.
그 중에서 메 인 키 의 데 이 터 는 GUID 변환 문자 형식 도 있 고 INT 변환 문자열 도 있 습 니 다.예제 데 이 터 는 다음 과 같 습 니 다.

그러나 아래 SQL 을 실행 하면 모두 정상적으로 실 행 됩 니 다.

select * from dbo.Demo where   ID=305 and   ='INT'

select * from dbo.Demo where   ID=305 and   ='2'

select * from dbo.Demo where   ID=305 and   =2

select * from dbo.Demo where   ID='305' and   ='INT'

select * from dbo.Demo where   ID='305'

결 과 는 다음 과 같다.

상술 한 오류 가 발생 한 결 과 는 다음 과 같 아야 한다.
select*from dbo.Demo where 혼합 ID=305 실행 시 SQL Server 는 nvarchar 형식의 내 현적 을 int 형식 으로 변환 하고,데이터 에 GUID 형식의 문자 가 없 으 면 정상적으로 변환 하 며,있 으 면 GUID 문 자 를 INT 로 내 현적 으로 변환 할 때 변환 에 실패 합 니 다.

이상 은 본 고의 모든 내용 입 니 다.SQL Server 데이터 형식 전환 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기