Типы данных SQL
Каждая СУБД определяет собственные типы SQL. Каждый драйвер ODBC предоставляет только те типы данных SQL, которые определяют связанные СУБД. Сведения о том, как драйвер сопоставляет типы СУБД SQL с идентификаторами типов SQL, определяемыми ODBC, и как драйвер сопоставляет типы СУБД SQL с собственными идентификаторами типов SQL для конкретного драйвера, возвращается через вызов SQLGetTypeInfo. Драйвер также возвращает типы данных SQL при описании типов данных столбцов и параметров с помощью вызовов SQLColAttribute, SQLColumns, SQLDescribeCol, SQLDescribeParam, SQLProcedureColumns и SQLSpecialColumns.
Заметка
Типы данных SQL содержатся в полях дескриптора реализации SQL_DESC_ CONCISE_TYPE, SQL_DESC_TYPE и SQL_DESC_DATETIME_INTERVAL_CODE. Характеристики типов данных SQL содержатся в полях SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_LENGTH и SQL_DESC_OCTET_LENGTH дескрипторов реализации. Дополнительные сведения см . в разделе "Идентификаторы типов данных" и "Дескрипторы " далее в этом приложении.
Указанный драйвер и источник данных не обязательно поддерживают все типы данных SQL, определенные в этом приложении. Поддержка драйвера для типов данных SQL зависит от уровня SQL-92, с которым соответствует драйвер. Чтобы определить уровень грамматики SQL-92, поддерживаемой драйвером, приложение вызывает SQLGetInfo с типом сведений SQL_SQL_CONFORMANCE. Кроме того, указанный драйвер и источник данных могут поддерживать дополнительные типы данных SQL для конкретного драйвера. Чтобы определить, какие типы данных поддерживает драйвер, приложение вызывает SQLGetTypeInfo. Сведения о типах данных SQL для конкретного драйвера см. в документации по драйверу. Сведения о типах данных в определенном источнике данных см. в документации по источнику данных.
Внимание
Таблицы в этом приложении являются только рекомендациями и отображают обычно используемые имена, диапазоны и ограничения типов данных SQL. Указанный источник данных может поддерживать только некоторые из перечисленных типов данных, а характеристики поддерживаемых типов данных могут отличаться от перечисленных.
В следующей таблице перечислены допустимые идентификаторы типов SQL для всех типов данных SQL. В таблице также перечислены имя и описание соответствующего типа данных из SQL-92 (если он существует).
Идентификатор типа SQL[1] | Типичные данные SQL type[2] |
Типичное описание типа |
---|---|---|
SQL_CHAR | CHAR(n) | Символьная строка фиксированной длины строки n. |
SQL_VARCHAR | VARCHAR(n) | Строка символа переменной длины с максимальной длиной строки n. |
SQL_LONGVARCHAR | LONG VARCHAR | Данные символов переменной длины. Максимальная длина зависит от источника данных. [9] |
SQL_WCHAR | WCHAR(n) | Символьная строка Юникода фиксированной длины строки n |
SQL_WVARCHAR | VARWCHAR(n) | Строка символа переменной длины Юникода с максимальной длиной строки n |
SQL_WLONGVARCHAR | LONGWVARCHAR | Символьные данные переменной длины Юникода. Максимальная длина зависит от источника данных |
SQL_DECIMAL | DECIMAL(p,s) | Подписанное, точное числовое значение с точностью по крайней мере p и scale s. (Максимальная точность определяется драйвером.) (1 <= p<= 15; s<= p).[ 4] |
SQL_NUMERIC | NUMERIC(p,s) | Подписанный, точный, числовое значение с точностью p и масштабируемым s (1 <= p<= 15; s<= p).[ 4] |
SQL_SMALLINT | SMALLINT | Точное числовое значение с точностью 5 и масштабом 0 (подписанный: -32 768 <= n<= 32 767, без знака: 0 <= n<= 65 535)[3]. |
SQL_INTEGER | INTEGER | Точное числовое значение с точностью 10 и масштабом 0 (подписанный: -2[31] <= n<= 2[31] - 1, без знака: 0 <= n<= 2[32] - 1)[3]. |
SQL_REAL | real | Подписанный, приблизительное числовое значение с двоичной точностью 24 (нулевое или абсолютное значение 10[-38] до 10[38]). |
SQL_FLOAT | FLOAT(p) | Подписанный, приблизительный, числовое значение с двоичной точностью по крайней мере p. (Максимальная точность определяется драйвером.) [5] |
SQL_DOUBLE | DOUBLE PRECISION | Подписанный, приблизительное числовое значение с двоичной точностью 53 (нулевое или абсолютное значение 10[-308] до 10[308]). |
SQL_BIT | BIT | Однобитовые двоичные данные. [8] |
SQL_TINYINT | TINYINT | Точное числовое значение с точностью 3 и масштабом 0 (подписанный: -128 <= n<= 127, без знака: 0 <= n<= 255)[3]. |
SQL_BIGINT | BIGINT | Точное числовое значение с точностью 19 (если подпись) или 20 (если не указано) и масштаб 0 (подписанный: -2[63] <= n<= 2[63] - 1, без знака: 0 <= n<= 2[64] - 1)[3],[9]. |
SQL_BINARY | BINARY(n) | Двоичные данные фиксированной длины n.[ 9] |
SQL_VARBINARY | VARBINARY(n) | Двоичные данные переменной длины n. Максимальное значение задается пользователем. [9] |
SQL_LONGVARBINARY | LONG VARBINARY | Двоичные данные переменной длины. Максимальная длина зависит от источника данных. [9] |
SQL_TYPE_DATE[6] | DATE | Поля года, месяца и дня, соответствующие правилам григорианского календаря. (См. раздел Ограничения григорианского календаря далее в этом приложении.) |
SQL_TYPE_TIME[6] | TIME(p) | Часы, минуты и второй поля с допустимыми значениями в часах от 00 до 23, допустимые значения в минутах от 00 до 59 и допустимые значения в секундах от 00 до 61. Точность p указывает точность секунд. |
SQL_TYPE_TIMESTAMP[6] | TIMESTAMP(p) | Год, месяц, день, час, минута и второе поля с допустимыми значениями, определенными для типов данных DATE и TIME. |
SQL_TYPE_UTCDATETIME | UTCDATETIME | Год, месяц, день, час, минута, вторая, utchour и поля utcminute. Поля utchour и utcminute имеют точность 1/10 микросекунд. |
SQL_TYPE_UTCTIME | UTCTIME | Час, минута, секунда, utchour и поля utcminute. Поля utchour и utcminute имеют точность 1/10 микросекунд.. |
SQL_INTERVAL_MONTH[7] | INTERVAL MONTH(p) | Количество месяцев между двумя датами; p — это начальная точность интервала. |
SQL_INTERVAL_YEAR[7] | INTERVAL YEAR(p) | Количество лет между двумя датами; p — это начальная точность интервала. |
SQL_INTERVAL_YEAR_TO_MONTH[7] | ИНТЕРВАЛ ГОДА(p) ДО МЕСЯЦА | Количество лет и месяцев между двумя датами; p — это начальная точность интервала. |
SQL_INTERVAL_DAY[7] | INTERVAL DAY(p) | Количество дней между двумя датами; p — это начальная точность интервала. |
SQL_INTERVAL_HOUR[7] | INTERVAL HOUR(p) | Количество часов между двумя датами и временем; p — это начальная точность интервала. |
SQL_INTERVAL_MINUTE[7] | INTERVAL MINUTE(p) | Количество минут между двумя датами и временем; p — это начальная точность интервала. |
SQL_INTERVAL_SECOND[7] | INTERVAL SECOND(p,q) | Количество секунд между двумя датами и временем; p — это начальная точность интервала, а q — это точность интервала в секундах. |
SQL_INTERVAL_DAY_TO_HOUR[7] | ИНТЕРВАЛ ДНЯ(p) ДО ЧАСА | Количество дней и часов между двумя датами и временем; p — это начальная точность интервала. |
SQL_INTERVAL_DAY_TO_MINUTE[7] | ИНТЕРВАЛ ДНЯ(p) ДО МИНУТЫ | Количество дней/часов/минут между двумя датами и временем; p — это начальная точность интервала. |
SQL_INTERVAL_DAY_TO_SECOND[7] | INTERVAL DAY(p) TO SECOND(q) | Количество дней/часов/минут/секунд между двумя датами и временем; p — это начальная точность интервала, а q — это точность интервала в секундах. |
SQL_INTERVAL_HOUR_TO_MINUTE[7] | INTERVAL HOUR(p) TO MINUTE | Количество часов и минут между двумя датами и временем; p — это начальная точность интервала. |
SQL_INTERVAL_HOUR_TO_SECOND[7] | INTERVAL HOUR(p) TO SECOND(q) | Количество часов/минут/секунд между двумя датами и временем; p — это начальная точность интервала, а q — это точность интервала в секундах. |
SQL_INTERVAL_MINUTE_TO_SECOND[7] | INTERVAL MINUTE(p) TO SECOND(q) | Количество минут/секунд между двумя датами и временем; p — это начальная точность интервала, а q — это точность интервала в секундах. |
SQL_GUID | GUID | Guid фиксированной длины. |
[1] Это значение, возвращаемое в столбце DATA_TYPE вызовом SQLGetTypeInfo.
[2] Это значение, возвращаемое в столбце NAME и CREATE PARAMS путем вызова SQLGetTypeInfo. Столбец NAME возвращает обозначение, например CHAR, тогда как столбец CREATE PARAMS возвращает разделенный запятыми список параметров создания, таких как точность, масштабирование и длина.
[3] Приложение использует SQLGetTypeInfo или SQLColAttribute , чтобы определить, является ли определенный тип данных или определенный столбец в результирующем наборе неназначен.
[4] SQL_DECIMAL и SQL_NUMERIC типы данных отличаются только в их точности. Точность ДЕСЯТИЧНЫХ(p,s) — это определяемая реализацией десятичная точность, которая не меньше p, в то время как точность числовых чисел (p,) точно равна p.
[5] В зависимости от реализации точность SQL_FLOAT может быть либо 24, либо 53: если она равна 24, тип данных SQL_FLOAT совпадает с SQL_REAL; Если значение равно 53, тип данных SQL_FLOAT совпадает с SQL_DOUBLE.
[6] В ODBC 3.x типы данных даты, времени и метки времени SQL SQL_TYPE_DATE, SQL_TYPE_TIME и SQL_TYPE_TIMESTAMP соответственно; в ODBC 2.x типы данных SQL_DATE, SQL_TIME и SQL_TIMESTAMP.
[7] Дополнительные сведения о типах данных SQL интервала см . в разделе "Типы данных интервала" далее в этом приложении.
[8] Тип данных SQL_BIT отличается от типа BIT в SQL-92.
[9] Этот тип данных не имеет соответствующего типа данных в SQL-92.
В этом разделе приведен следующий пример.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по