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 데이터 형식 전환 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.