SQL에서 C로: 문자
문자 ODBC SQL 데이터 형식의 식별자는 다음과 같습니다.
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
다음 표에서는 문자 SQL 데이터를 변환할 수 있는 ODBC C 데이터 형식을 보여줍니다. 테이블의 열 및 용어에 대한 설명은 SQL에서 C 데이터 형식으로 데이터 변환을 참조 하세요.
C 형식 식별자 | 테스트 | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | Data <BufferLength의 바이트 길이 데이터의 >바이트 길이 = BufferLength |
데이터 잘린 데이터 |
데이터 길이(바이트) 데이터 길이(바이트) |
해당 없음 01004 |
SQL_C_WCHAR | 데이터 <BufferLength의 문자 길이 데이터의 >문자 길이 = BufferLength |
데이터 잘린 데이터 |
문자의 데이터 길이 문자의 데이터 길이 |
해당 없음 01004 |
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC | 잘림 없이 변환된 데이터[b] 소수 자릿수 잘림으로 변환된 데이터[a] 데이터를 변환하면 소수 자릿수가 아닌 전체 자릿수가 손실됩니다.[a] 데이터가 숫자 리터럴이 아닙니다.[b] |
데이터 잘린 데이터 Undefined Undefined |
C 데이터 형식의 바이트 수 C 데이터 형식의 바이트 수 Undefined Undefined |
해당 없음 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | 데이터는 숫자가 변환되는 데이터 형식의 범위 내에 있습니다.[a] 데이터가 숫자가 변환되는 데이터 형식 범위를 벗어났습니다.[a] 데이터가 숫자 리터럴이 아닙니다.[b] |
데이터 Undefined Undefined |
C 데이터 형식의 크기 Undefined Undefined |
해당 없음 22003 22018 |
SQL_C_BIT | 데이터는 0 또는 1입니다. 데이터가 0보다 크고 2보다 작으며 1과 같지 않음 데이터가 0보다 작거나 2보다 크거나 같음 데이터가 숫자 리터럴이 아닙니다. |
데이터 잘린 데이터 Undefined Undefined |
1[b] 1[b] Undefined Undefined |
해당 없음 01S07 22003 22018 |
SQL_C_BINARY | 데이터의 <바이트 길이 = BufferLength Data >BufferLength의 바이트 길이 |
데이터 잘린 데이터 |
데이터 길이(바이트) 데이터 길이 |
해당 없음 01004 |
SQL_C_TYPE_DATE | 데이터 값은 유효한 date-value[a] 데이터 값은 유효한 타임스탬프-값입니다. 시간 부분은 0입니다.[a] 데이터 값은 유효한 타임스탬프-값입니다. 시간 부분은 0이 아닌 값입니다.[a],[c] 데이터 값이 유효한 date-value 또는 timestamp-value가 아닙니다.[a] |
데이터 데이터 잘린 데이터 Undefined |
6[b] 6[b] 6[b] Undefined |
해당 없음 해당 없음 01S07 22018 |
SQL_C_TYPE_TIME | 데이터 값은 유효한 시간 값이며 소수 자릿수 초 값은 0[a] 데이터 값은 유효한 타임스탬프 값 또는 유효한 시간 값입니다. 소수 자릿수 초 부분은 0[a],[d] 데이터 값은 유효한 타임스탬프-값입니다. 소수 자릿수 초 부분은 0이 아닌 경우[a],[d],[e] 데이터 값이 유효한 시간-값 또는 timestamp-value가 아닙니다.[a] |
데이터 데이터 잘린 데이터 Undefined |
6[b] 6[b] 6[b] Undefined |
해당 없음 해당 없음 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | 데이터 값은 유효한 타임스탬프 값 또는 유효한 시간 값입니다. 소수 자릿수 초 부분은 잘리지 않습니다.[a] 데이터 값은 유효한 타임스탬프 값 또는 유효한 시간 값입니다. 소수 자릿수 초 부분이 잘립니다.[a] 데이터 값은 유효한 date-value[a] 데이터 값이 유효한 시간 값입니다.[a] 데이터 값이 유효한 날짜-값, 시간 값 또는 타임스탬프 값이 아닙니다.[a] |
데이터 잘린 데이터 Data[f] Data[g] Undefined |
16[b] 16[b] 16[b] 16[b] Undefined |
해당 없음 01S07 해당 없음 해당 없음 22018 |
모든 C 간격 형식 | 데이터 값은 유효한 간격 값이며 잘림 없음 데이터 값은 유효한 간격 값입니다. 하나 이상의 후행 필드를 잘림 데이터는 유효한 간격입니다. 선행 필드의 정밀도가 손실됨 데이터 값이 유효한 간격 값이 아닙니다. |
데이터 잘린 데이터 Undefined Undefined |
데이터 길이(바이트) 데이터 길이(바이트) Undefined Undefined |
해당 없음 01S07 22015 22018 |
[a] 이 변환에서는 BufferLength 값이 무시됩니다. 드라이버는 *TargetValuePtr 의 크기가 C 데이터 형식의 크기라고 가정합니다.
[b] 해당 C 데이터 형식의 크기입니다.
[c] 타임스탬프-값의 시간 부분이 잘립니다.
[d] 타임스탬프-값의 날짜 부분은 무시됩니다.
[e] 타임스탬프의 소수 자릿수 초 부분이 잘립니다.
[f] 타임스탬프 구조의 시간 필드가 0으로 설정됩니다.
[g] 타임스탬프 구조의 날짜 필드가 현재 날짜로 설정됩니다.
추가 공백
SQL 문자 데이터가 다음 형식으로 변환될 때 선행 및 후행 공백은 무시됩니다.
- 날짜
- numeric
- 시간
- timestamp
- interval C 데이터