데이터 형식 차이 이해

JDBC 드라이버 다운로드

Java 프로그래밍 언어 데이터 형식과 SQL Server 데이터 형식 간에는 여러 가지 차이점이 있습니다. Microsoft JDBC Driver for SQL Server는 다양한 유형의 변환을 통해 이러한 차이점을 지원하는 데 유용합니다.

문자 형식

JDBC 문자열 데이터 형식은 CHAR, VARCHAR, LONGVARCHAR입니다. JDBC 드라이버는 JDBC 4.0 API를 지원합니다. JDBC 4.0에서 JDBC 문자열 데이터 형식은 NCHAR, NVARCHAR, LONGNVARCHAR일 수도 있습니다. 이러한 새 문자열 형식은 Java 네이티브 문자 형식을 유니코드 형식으로 유지하며, ANSI에서 유니코드로, 유니코드에서 ANSI로의 변환을 수행할 필요가 없습니다.

Type 설명
고정 길이 SQL Server charnchar 데이터 형식은 JDBC CHARNCHAR 형식에 직접 매핑됩니다. 열에 SET ANSI_PADDING ON이 있는 경우 서버에서 제공된 패딩이 있는 고정 길이 형식입니다. nchar에 대해서는 패딩이 항상 설정되어 있지만 char에 대해서는 그렇지 않습니다. 서버 char 열이 패딩되지 않은 경우 JDBC 드라이버에서 패딩을 추가합니다.
가변 길이 SQL Server varcharnvarchar 형식은 각각 JDBC VARCHARNVARCHAR 형식에 직접 매핑됩니다.
Long SQL Server textntext 형식은 각각 JDBC LONGVARCHARLONGNVARCHAR 형식에 매핑됩니다. SQL Server 2005(9.x)부터 사용되지 않는 형식이므로 큰 값 형식인 varchar(max) 또는 nvarchar(max)를 대신 사용해야 합니다.

update<Numeric Type> 및 updateObject(int, java.lang.Object) 메서드를 사용하면 textntext 서버 열에 대해 실패합니다. 그러나 지정된 문자 변환 형식과 함께 setObject 메서드를 textntext 서버 열에 사용하는 것은 지원됩니다.

이진 문자열 형식

JDBC 이진 문자열 형식은 BINARY, VARBINARY, LONGVARBINARY입니다.

Type 설명
고정 길이 SQL Server 이진 형식은 JDBC BINARY 형식에 직접 매핑됩니다. 열에 SET ANSI_PADDING ON이 있는 경우 서버에서 제공된 패딩이 있는 고정 길이 형식입니다. 서버 문자 열이 패딩되지 않은 경우 JDBC 드라이버는 패딩을 추가합니다.

SQL Server 타임스탬프 형식은 고정 길이가 8바이트인 JDBC BINARY 형식입니다.
가변 길이 SQL Server varbinary 형식은 JDBC VARBINARY 형식에 매핑됩니다.

SQL Server udt 형식은 VARBINARY 형식으로 JDBC에 매핑됩니다.
Long SQL Server image 형식은 JDBC LONGVARBINARY 형식에 매핑됩니다. SQL Server 2005(9.x)부터 사용되지 않는 형식이므로 큰 값 형식인 varchar(max)를 대신 사용해야 합니다.

정확한 숫자 형식

JDBC의 정확한 숫자 형식은 해당되는 SQL Server 형식에 바로 매핑됩니다.

Type 설명
BIT JDBC BIT 형식은 0 또는 1일 수 있는 단일 비트를 나타냅니다. SQL Server bit 형식에 매핑됩니다.
TINYINT JDBC TINYINT 형식은 단일 바이트를 나타내며 SQL Server tinyint 형식에 매핑됩니다.
SMALLINT JDBC SMALLINT 형식은 부호 있는 16비트 정수를 나타내며 SQL Server smallint 형식에 매핑됩니다.
INTEGER JDBC INTEGER 형식은 부호 있는 32비트 정수를 나타내며 SQL Server int 형식에 매핑됩니다.
BIGINT JDBC BIGINT 형식은 부호 있는 64비트 정수를 나타내며 SQL Server bigint 형식에 매핑됩니다.
NUMERIC JDBC NUMERIC 형식은 전체 자릿수 값이 동일한 고정 전체 자릿수 10진수 값을 나타냅니다. NUMERIC 형식은 SQL Server numeric 형식에 매핑됩니다.
DECIMAL JDBC DECIMAL 형식은 지정된 전체 자릿수 이상의 값인 고정 전체 자릿수 10진수 값을 나타냅니다. DECIMAL 형식은 SQL Server decimal 형식에 매핑됩니다.

JDBC DECIMAL 형식도 SQL Server moneysmallmoney 형식에 매핑됩니다. 이 형식은 각각 8바이트와 4바이트로 저장되는 특정 고정 전체 자릿수 10진수 형식입니다.

근사치 형식

JDBC 근사치 형식은 REAL, DOUBLEFLOAT입니다.

Type 설명
REAL JDBC REAL 형식의 전체 자릿수는 7자리(단정밀도)이며 SQL Server real 형식에 직접 매핑됩니다.
DOUBLE JDBC DOUBLE 형식의 전체 자릿수는 15자리(배정밀도)이며 SQL Server float 형식에 매핑됩니다. JDBC FLOAT 형식은 DOUBLE의 동의어입니다. FLOATDOUBLE 사이에 혼동이 있을 수 있으므로 DOUBLE이 선호됩니다.

날짜/시간 형식

JDBC TIMESTAMP 형식은 SQL Server datetimesmalldatetime 형식에 매핑됩니다. datetime 형식은 두 개의 4바이트 정수로 저장됩니다. smalldatetime 형식은 두 가지 2바이트 작은 정수로 정보(날짜 및 시간)가 똑같지만, 정확도가 낮습니다.

참고 항목

SQL Server timestamp 형식은 고정 길이 이진 문자열 형식입니다. DATE, TIME 또는 TIMESTAMP 등 JDBC 시간 형식에 매핑되지 않습니다.

사용자 지정 형식 매핑

JDBC 고급 형식(UDT, 구조체 등)에 SQLData 인터페이스를 사용하는 JDBC의 사용자 지정 형식 매핑 기능입니다. JDBC 드라이버에 구현되어 있지 않습니다.

참고 항목

JDBC 드라이버 데이터 형식 이해