Oracle тип number: Типы данных — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Типы данных — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Ниже приведен список типов данных, доступных в Oracle/PLSQL, который включает в себя символьные, числовые, дата/время, булевы LOB, RowId типы данных.
Символьные типы данных
Ниже перечислены символьные типы данных в Oracle/PLSQL:
Типы данных | Размер | Описание |
---|---|---|
char(размер) | Максимальный размер 2000 байт. | Где размер — количество символов фиксированной длины. Если сохраняемое значение короче, то дополняется пробелами; если длиннее, то выдается ошибка. |
nchar(размер) | Максимальный размер 2000 байт. | Где размер — количество символов фиксированной длины в кодировке Unicode. Если сохраняемое значение короче, то дополняется пробелами; если длиннее, то выдается ошибка. |
nvarchar2(размер) | Максимальный размер 4000 байт. | Где размер – количество сохраняемых символов в кодировке Unicode переменной длины. |
varchar2(размер) | Максимальный размер 4000 байт. Максимальный размер в PLSQL 32KB. | Где размер – количество сохраняемых символов переменной длины. |
long | Максимальный размер 2GB. | Символьные данные переменной длины. |
raw | Максимальный размер 2000 байт. | Содержит двоичные данные переменной длины |
long raw | Максимальный размер 2GB. | Содержит двоичные данные переменной длины |
Применение: Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c
Числовые типы данных
Ниже приведены числовые типы данных в Oracle/PLSQL:
Типы данных | Размер | Описание |
---|---|---|
number(точность,масштаб) | Точность может быть в диапазоне от 1 до 38. Масштаб может быть в диапазоне от -84 до 127. | Например,number (14,5) представляет собой число, которое имеет 9 знаков до запятой и 5 знаков после запятой. |
numeric(точность,масштаб) | Точность может быть в диапазоне от 1 до 38. | Например, numeric(14,5) представляет собой число, которое имеет 9 знаков до запятой и 5 знаков после запятой. |
dec(точность,масштаб) | Точность может быть в диапазоне от 1 до 38. | Например, dec (5,2) — это число, которое имеет 3 знака перед запятой и 2 знака после . |
decimal(точность,масштаб) | Точность может быть в диапазоне от 1 до 38. | Например, decimal (5,2) — это число, которое имеет 3 знака перед запятой и 2 знака после . |
PLS_INTEGER | Целые числа в диапазоне от -2,147,483,648 до 2,147,483,647 | Значение PLS_INTEGER требуют меньше памяти и быстрее значений NUMBER |
Применение: Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c
Дата/время типы данных
Ниже приведены типы данных дата/время в Oracle/PLSQL:
Типы данных | Размер | Описание |
---|---|---|
date | date может принимать значения от 1 января 4712 года до н.э. до 31 декабря 9999 года нашей эры. |
Применение: Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c
Большие объекты (LOB) типы данных
Ниже перечислены типы данных LOB в Oracle/PLSQL:
Типы данных | Размер | Описание |
---|---|---|
bfile | Максимальный размер файла 4 ГБ. | Файл locators, указывает на двоичный файл в файловой системе сервера (вне базы данных). |
blob | Хранит до 4 ГБ двоичных данных. | Хранит неструктурированные двоичные большие объекты. |
clob | Хранит до 4 ГБ символьных данных. | Хранит однобайтовые и многобайтовые символьные данные. |
nclob | Хранит до 4 ГБ символьных текстовых данных. | Сохраняет данные в кодировке unicode. |
Применение: Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c
Rowid тип данных
Ниже перечислены типы данных Rowid в Oracle/PLSQL:
Типы данных | Формат | Описание |
---|---|---|
rowid | Формат строки: BBBBBBB.RRRR.FFFFF,Где BBBBBBB — это блок в файле базы данных; RRRR — строка в блоке; FFFFF — это файл базы данных. | Двоичные данные фиксированной длины. Каждая запись в базе данных имеет физический адрес или идентификатор строки (rowid). |
Булевы (BOOLEAN) типы данных
Типы данных | Формат | Описание |
---|---|---|
BOOLEAN | TRUE или FALSE. Может принимать значение NULL | Хранит логические значения, которые вы можете использовать в логических операциях. |
Применение: Oracle 9i, Oracle 10g, Oracle 11g, Oracle 12c
Типы данных Oracle — SQL программирование
ORACLE
Как показано ниже, Oracle поддерживает множество типов данных, в том числе большинство стандартных типов SQL 2003. Естественно, для этого нужно скачать и установить сам ORACLE.
Типа для больших данных
В FILE (тип данных SQL 2003: DATALINK)
Содержит указатель на объект типа BLOB, хранимый вне пределов базы данных, но находящийся на локальном сервере и имеющий размер до 4 Гб. База данных осуществляет потоковый доступ по чтению (но не по записи) к этому внешнему объекту. Если вы удалите строку, содержащую значение типа BFILE, будет удален только указатель. Исходная структура файлов не затрагивается.
BINARY FLOAT(тип данных SQL 2003: FLOAT)
Хранит 32-битное число с плавающей точкой. BINARY DOUBLE (тип данных SQL 2003: FLOAT) Хранит 64-битное число с плавающей точкой.
BLOB (тип данных SQL 2003: BLOB)
Храпит большой двоичный объект (binary large object, BLOB) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных. В Oracle большие двоичные объекты (BLOB, CLOB, NCLOB) имеют следующие ограничения.
- Их нельзя выбирать с удаленной машины.
- Их нельзя сохранять в кластерах.
- Их нельзя объединять в типе varray.
- Они не могут быть компонентом предложений ORDER BYw GROUP BY ъ запросе.
- Их нельзя использовать в агрегатных функциях запроса.
- На них нельзя ссылаться в запросах при помощи инструкций DISTINCT wUNIQUE или в соединениях.
- На них нельзя ссылаться в предложениях ANALYZE…COMPUTE и ANALYZE… ESTIMATE.
- Они не могут быть частью первичного ключа или ключа индекса.
- Их нельзя использовать в предложении UPDATE OF триггера UPDATE.
CHAR(n) [BYTE | CHAR], СНАRACTER(n)[BYTE CHAR] (тип данных SQL 2003: CHARA CTER(n))
Хранит массив символьных данных фиксированной длины до 2000 байт. При указании атрибута BYTE длина массива измеряется в байтах. При указании атрибута CHAR длина измеряется в символах.
CLOB (тип данных SQL 2003: CLOB)
Хранит большой символьный объект (large character object, CLOB) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных.
DATE (тип данных SQL 2003: DATE)
Хранит дату и время в диапазоне от 00:00:00 01-01-4712 до н. э. до 23:59:59 31-12-9999.
DECIMALfp, s) (тип данных SQL 2003: DECIMALfp, s))
Синоним типа NUMBER, принимающий в качестве аргументов точность и масштаб.
DOUBLE PRECISION (тип данных SQL 2003: DOUBLE PRECISION)
Хранит значения с плавающей точкой двойной точности. То же, что FLOAT(126).
FLOAT(n) (тип данных SQL 2003: FLOAT(n))
Хранит числовые данные с плавающей точкой с двоичной точностью до 126.
INTEGER(n) (тип данных SQL 2003: INTEGER)
Хранит целые числа со знаком и без знака с точностью до 38. Тип INTEGER считается синонимом NUMBER.
INTERVAL DAY (n) ТО SECOND (х) (тип данных SQL 2003: INTERVAL)
Хранит промежуток времени, измеряемый в днях, часах, минутах и секундах, п -число цифр в поле «день» (допустимые значения 0-9, по умолчанию — 2), а х-число цифр для долей секунды в поле секунд (допустимые значения 0-9, по умолчанию — 6).
INTERVAL YEAR (n) ТО MONTH (х) (тип данных SQL 2003: INTERVAL)
Хранит промежуток времени, измеряемый в годах и месяцах, где n — число цифр в поле года. Значение n может быть от 0 до 9, по умолчанию — 2.
LONG (тип данных SQL 2003: отсутствует)
Хранит массив символьных данных переменной длины до 2 Гб. Тем не менее нужно заметить, что Oracle в долгосрочной перспективе не планирует поддерживать тип LONG. Вместо этого типа старайтесь везде, где возможно, использовать другие типы, например CLOB.
LONG RAW (тип данных SQL 2003: отсутствует)
Хранит сырые двоичные данные переменной длины до 2 Гб. Типы LONG RAW и RA W обычно используются для хранения графики, звуковых данных, документов и других больших структур. Использование типа BLOB является более предпочтительным, чем применение LONG RAW, поскольку BLOB имеет меньше ограничений. Тип LONG RAW также выходит из употребления.
NATIONAL CHARACTER VARYING(n), NATIONAL CHAR VARYING(n), NCHAR VARYING(n)
Тип данных SQL 2003: NCHAR VARYlNG(n)) тo же, что и NVARCHAR2.
NCHAR(n), NATIONAL CHARACTER, NATIONAL CHAR(n) (тип данных SQL 2003:NATIONAL CHARACTER)
Хранит данные в формате символов UNICODE длиной от 1 до 2000 байт. По умолчанию — 1 байт.
NCLOB (тип данных SQL 2003: NCLOB)
Представляет собой CLOB с поддержкой многобайтовых символов и UNICODE размером от 8 до 128 терабайт в зависимости от размера блока базы данных.
NUMBER(p, s), NUMERIC(p, s) (тип данных SQL 2003: NUMERIC(p.s))
Хранит числа с точностью в пределах от 1 до 38 и масштабом от-84 до 127.
NVARCHAR2(n) (тип данных SQL 2003: отсутствует)
Представляет собой рекомендуемый Oracle тип для хранения символьных данных переменной длины. Может занимать от 1 до 4000 байт.
RAW(n) (тип данных SQL 2003: отсутствует)
Хранит массив сырых данных переменной длины до 2000 байт. Значение п указывает размер типа данных. В Oracle 10g тип RAW исключен. Смотрите LONG RAW.
REAL (тип данных SQL 2003: REAL)
Хранит значения с плавающей точкой с одинарной точностью. То же, что FLOAT(63).
ROW ID (тип данных SQL 2003: отсутствует)
Представляет собой уникальный идентификатор типа base-64 для каждой строки таблицы. Часто используется с псевдостолбцом ROWID.
SMALLINT
Тип данных SQL 2003: SMALL1NT, то же, что INTEGER.
TIMESTAMP(n){[WITH TIME ZONE] [WITH LOCAL TIME ZONE]} (тип данных SQL 2003: TIMESTAMP [WlTH TIME ZONE])
Значение полной даты и времени, где п — количество цифр для долей секунды в поле секунд (допустимые значения 0 — 9, по умолчанию — 6). При указании атрибута WITH TIME ZONE сохраняется переданный в качестве параметра часовой пояс (по умолчанию — часовой пояс текущего сеанса) и значение времени выдается с учетом этого часового пояса. При указании атрибута WITH LOCAL TIME ZONE данные хранятся с учетом часового пояса текущего сеанса и возвращаются также с учетом часового пояса текущего сеанса.
UROWID [(п)] (тип данных SQL 2003: отсутствует)
Хранит значение типа base-64, показывающее логический адрес строки в таблице. По умолчанию размер составляет 4000 байт. Вы можете при желании указать размер в пределах до 4000 байт.
VARCHAR(n), CHARACTER VARYING(n), CHAR VARYING(n) (тип данных SQL 2003: CHARACTER VARYING(n))
Хранит символьные данные размером от 1 до 4000 байт.
VARCHAR2(n [BYTE CHAR]) (тип данных SQL 2003: CHARACTER VARYING(n))
Хранит символьные данные переменной длины до 4000 байт (определяется параметром и). Атрибут BYTE показывает, что размер измеряется в байтах. Если вы используете атрибут CHAR, база Oracle должна провести внутреннее преобразование в определенное количество байт, которое должно соответствовать ограничению в 4000 байт.
XMLTYPE (тип данных SQL 2003: XML)
Хранит в базе Oracle данные формата XML. Доступ к данным XML осуществляется с помощью выражений XPath, а также нескольких встроенных XPath-функций, функций SQL и пакетов PL/SQL. Тип XMLTYPE определяется системой, поэтому его можно использовать в качестве аргумента функций, а также типа данных для столбца в таблице или представлении. При использовании этого типа в таблице данные можно сохранить в форме CLOB или связанного объекта.
Oracle не рекомендует использовать тип VARCHAR. В течение многих лет Oracle поощряет использование типа VARCHAR2.
Сопоставления типов данных Oracle — ADO.NET
-
- Чтение занимает 3 мин
В этой статье
В следующей таблице представлены типы данных Oracle и их сопоставления объекту OracleDataReader.The following table lists Oracle data types and their mappings to the OracleDataReader.
Тип данных OracleOracle data type | Тип данных .NET Framework, возвращаемый OracleDataReader.GetValue.NET Framework data type returned by OracleDataReader.GetValue | Тип данных OracleClient, возвращаемый OracleDataReader.GetOracleValueOracleClient data type returned by OracleDataReader.GetOracleValue | RemarksRemarks |
---|---|---|---|
BFILEBFILE | Byte []Byte[] | OracleBFile | |
BLOBBLOB | Byte []Byte[] | OracleLob | |
CHARCHAR | StringString | OracleString | |
CLOBCLOB | StringString | OracleLob | |
DATEDATE | DateTimeDateTime | OracleDateTime | |
FLOATFLOAT | DecimalDecimal | OracleNumber | Этот тип данных является псевдонимом для типа данных Number и предназначен для того, чтобы функция OracleDataReader возвращала System. Decimal или OracleNumber вместо значения с плавающей запятой.This data type is an alias for the NUMBER data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of a floating-point value. Использование типа данных .NET Framework может вызвать переполнение.Using the .NET Framework data type can cause an overflow. |
INTEGERINTEGER | DecimalDecimal | OracleNumber | Этот тип данных является псевдонимом для типа данных Number (38) и предназначен для того, чтобы функция OracleDataReader возвращала System. Decimal или OracleNumber вместо целого значения.This data type is an alias for the NUMBER(38) data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of an integer value. Использование типа данных .NET Framework может вызвать переполнение.Using the .NET Framework data type can cause an overflow. |
INTERVAL YEAR TO MONTHINTERVAL YEAR TO MONTH | Int32Int32 | OracleMonthSpan | |
INTERVAL DAY TO SECONDINTERVAL DAY TO SECOND | TimeSpanTimeSpan | OracleTimeSpan | |
LONGLONG | StringString | OracleString | |
LONG RAWLONG RAW | Byte []Byte[] | OracleBinary | |
NCHARNCHAR | StringString | OracleString | |
NCLOBNCLOB | StringString | OracleLob | |
НумерацияNUMBER | DecimalDecimal | OracleNumber | Использование типа данных .NET Framework может вызвать переполнение.Using the .NET Framework data type can cause an overflow. |
NVARCHAR2NVARCHAR2 | StringString | OracleString | |
RAWRAW | Byte []Byte[] | OracleBinary | |
REF CURSORREF CURSOR | Тип данных курсора Oracle ref не поддерживается OracleDataReader объектом.The Oracle REF CURSOR data type is not supported by the OracleDataReader object. | ||
ROWIDROWID | StringString | OracleString | |
TIMESTAMPTIMESTAMP | DateTimeDateTime | OracleDateTime | |
TIMESTAMP WITH LOCAL TIME ZONETIMESTAMP WITH LOCAL TIME ZONE | DateTimeDateTime | OracleDateTime | |
МЕТКА ВРЕМЕНИ С ЧАСОВЫМ ПОЯСОМTIMESTAMP WITH TIME ZONE | DateTimeDateTime | OracleDateTime | |
ЦЕЛОЕ ЧИСЛО БЕЗ ЗНАКАUNSIGNED INTEGER | ЧислоNumber | OracleNumber | Этот тип данных является псевдонимом для типа данных Number (38) и предназначен для того, чтобы функция OracleDataReader возвращала значение System. Decimal или OracleNumber вместо целого числа без знака.This data type is an alias for the NUMBER(38) data type, and is designed so that the OracleDataReader returns a System.Decimal or OracleNumber instead of an unsigned integer value. Использование типа данных .NET Framework может вызвать переполнение.Using the .NET Framework data type can cause an overflow. |
VARCHAR2VARCHAR2 | StringString | OracleString |
В следующей таблице перечислены типы данных Oracle и типы данных .NET Framework (System. Data. DbType и OracleType ), которые используются при их привязке в качестве параметров.The following table lists Oracle data types and the .NET Framework data types (System.Data.DbType and OracleType) to use when binding them as parameters.
Тип данных OracleOracle data type | Перечисление DbType, которое привязывается как параметрDbType enumeration to bind as a parameter | Перечисление OracleType, которое привязывается как параметрOracleType enumeration to bind as a parameter | RemarksRemarks |
---|---|---|---|
BFILEBFILE | BСведенияBFile | Oracle допускает привязку типа BFILE только в качестве параметра BFILE .Oracle only allows binding a BFILE as a BFILE parameter. Поставщик данных .NET для Oracle не создает его автоматически при попытке привязать значение, отличное отBFILE , например Byte [] или OracleBinary .The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-BFILE value, such as byte[] or OracleBinary. | |
BLOBBLOB | Большие двоичные объектыBlob | Oracle позволяет привязать большой двоичный объект только в качестве параметра большого двоичного объекта .Oracle only allows binding a BLOB as a BLOB parameter. Поставщик данных .NET для Oracle не создает его автоматически при попытке привязать значение, отличное отбольшого двоичного объекта , например Byte [] или OracleBinary .The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-BLOB value, such as byte[] or OracleBinary. | |
CHARCHAR | AnsiStringFixedLengthAnsiStringFixedLength | CharChar | |
CLOBCLOB | CLOBClob | Oracle допускает привязку CLOB только в качестве параметра CLOB .Oracle only allows binding a CLOB as a CLOB parameter. Поставщик данных .NET для Oracle не создает его автоматически при попытке привязать значение, не являющеесяCLOB , например System. String или OracleString .The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-CLOB value, such as System.String or OracleString. | |
DATEDATE | DateTimeDateTime | DateTimeDateTime | |
FLOATFLOAT | Одинарный, двойной, десятичныйSingle, Double, Decimal | Float, Double, NumberFloat, Double, Number | Size Определяет System. Data. DBType и OracleType .Size determines the System.Data.DBType and OracleType. |
INTEGERINTEGER | SByte, Int16, Int32, Int64, DecimalSByte, Int16, Int32, Int64, Decimal | SByte, Int16, Int32, NumberSByte, Int16, Int32, Number | Size Определяет System. Data. DBType и OracleType .Size determines the System.Data.DBType and OracleType. |
INTERVAL YEAR TO MONTHINTERVAL YEAR TO MONTH | Int32Int32 | IntervalYearToMonthIntervalYearToMonth | OracleType доступен только при использование как клиентского, так и серверного программного обеспечения Oracle 9i.OracleType is only available when using both Oracle 9i client and server software. |
INTERVAL DAY TO SECONDINTERVAL DAY TO SECOND | ОбъектObject | IntervalDayToSecondIntervalDayToSecond | OracleType доступен только при использование как клиентского, так и серверного программного обеспечения Oracle 9i.OracleType is only available when using both Oracle 9i client and server software. |
LONGLONG | AnsiStringAnsiString | LongVarCharLongVarChar | |
LONG RAWLONG RAW | ДвоичныйBinary | LongRawLongRaw | |
NCHARNCHAR | StringFixedLengthStringFixedLength | NCharNChar | |
NCLOBNCLOB | NClobNClob | Oracle позволяет привязать параметр NCLOB только в качестве параметра NCLOB .Oracle only allows binding a NCLOB as a NCLOB parameter. Поставщик данных .NET для Oracle не создает его автоматически при попытке привязать значение, отличное отNCLOB , например System. String или OracleString .The .NET Data Provider for Oracle does not automatically construct one for you if you attempt to bind a non-NCLOB value, such as System.String or OracleString. | |
НумерацияNUMBER | VarNumericVarNumeric | ЧислоNumber | |
NVARCHAR2NVARCHAR2 | StringString | NVarCharNVarChar | |
RAWRAW | ДвоичныйBinary | RawRaw | |
REF CURSORREF CURSOR | КурсорCursor | Дополнительные сведения см. в разделе Oracle REF CURSOR.For more information, see Oracle REF CURSORs. | |
ROWIDROWID | AnsiStringAnsiString | ROWIDRowid | |
TIMESTAMPTIMESTAMP | DateTimeDateTime | TimestampTimestamp | OracleType доступен только при использование как клиентского, так и серверного программного обеспечения Oracle 9i.OracleType is only available when using both Oracle 9i client and server software. |
TIMESTAMP WITH LOCAL TIME ZONETIMESTAMP WITH LOCAL TIME ZONE | DateTimeDateTime | TimestampLocalTimestampLocal | OracleType доступен только при использование как клиентского, так и серверного программного обеспечения Oracle 9i.OracleType is only available when using both Oracle 9i client and server software. |
МЕТКА ВРЕМЕНИ С ЧАСОВЫМ ПОЯСОМTIMESTAMP WITH TIME ZONE | DateTimeDateTime | TimestampWithTzTimestampWithTz | OracleType доступен только при использование как клиентского, так и серверного программного обеспечения Oracle 9i.OracleType is only available when using both Oracle 9i client and server software. |
ЦЕЛОЕ ЧИСЛО БЕЗ ЗНАКАUNSIGNED INTEGER | Byte, UInt16, UInt32, UInt64, DecimalByte, UInt16, UInt32, UInt64, Decimal | Byte, UInt16, Uint32, NumberByte, UInt16, Uint32, Number | Size Определяет System. Data. DBType и OracleType .Size determines the System.Data.DBType and OracleType. |
VARCHAR2VARCHAR2 | AnsiStringAnsiString | VarCharVarChar |
Значения инпутаутпут, Outputи ReturnValue параметердиректион , используемые Value свойством OracleParameter объекта, являются .NET Framework типами данных, если только входное значение не является типом данных Oracle (например, OracleNumber или OracleString ).The InputOutput, Output, and ReturnValue ParameterDirection values used by the Value property of the OracleParameter object are .NET Framework data types, unless the input value is an Oracle data type (for example, OracleNumber or OracleString). Это не относится к типам данных ref Cursor, BFILEили LOB .This does not apply to REF CURSOR, BFILE, or LOB data types.
См. также разделSee also
Функции конвертации типов данных доступные в SQL
Строчные функции конвертации типа данных разработаны для изменения типа данных столбца, выражения или литерала. Наиболее часто используемые функции конвертации это TO_CHAR, TO_NUMBER и TO_DATE. TO_CHAR преобразует числа и даты в символьные данные, когда TO_NUMBER и TO_DATE преобразует символьные данные соответственно в число и дату.
Функции конвертации
Oracle позволяет определять столбцы с типами данных ANSI, DB2 и SQL/DS. Эти типы преобразуется к типам данных Oracle. У каждого столбца определяется тип данных который ограничивает природу данных которые могут храниться в этом столбце. Столбец NUMBER не может хранить символьную информацию. Столбец DATE не может хранить случайные символы или числа. VARCHAR2 может хранить символьные эквиваленты чисел и дат.
Если функция у которой входной параметр является строкой получает на вход число, Oracle автоматически конвертирует его в символьный эквивалент. Если функция с входными параметрами типа данных число или дата получает на вход строку, то должны соблюдаться определённые условия для автоматической конвертации. Несмотря на то что автоматическая неявная конвертация доступна, гораздо более понятно и надёжно явно сконвертировать один тип данных в другой перед вызовом строчной функции.
Неявная конвертация типов
Значения, которые не соответствуют типам данных параметров функции неявно конвертируется перед выполнением если это возможно. Оба типа данных VARCHAR2 и CHAR используются как символьные типы данных. Символьные типы данных достаточно гибкие для хранения практически любой информации. Таким образом, ДАТА и ЧИСЛО можно легко преобразовать в их символьный эквивалент. Такая конвертация известна как преобразования число в строку и дата в строку. Рассмотрим следующие запросы
Query 1: select length(1234567890) from dual
Query 2: select length(SYSDATE) from dual
Оба запроса используют функцию LENGTH у которой входной параметр определён как строка. Число 1234567890 в запросе один неявно конвертируется в строку ‘1234567890’ перед вычисление функции LENGTH и результат функции будет 10. Запрос номер два вычисляет функцию SYSDATE предположим 7 апреля 2008 года. Результат преобразуется в строку ’07-APR-08’ и результат выполнения функции LENGTH будет число 9.
Обычно не принято допускать неявную конвертацию строк в числа, так как единственная ситуация, когда это возможно, это если строка представляет собой валидное число. Строка ‘11’ будет неявно преобразована в число 11, но строка ’11.123.345’ не будет, как показано в следующих примерах
Query 3: select mod(’11’, 2) from dual
Query 4: select mod(‘11.123’, 2) from dual
Query 5: select mod(‘11.123.456’, 2) from dual
Query 6: select mod(‘$11’, 2) from dual
Запросы 3 и 4 неявно преобразовали строки ‘11’ и ’11.123’ в числа 11 и 11.123 соответственно, перед вызовом функции MOD которая в свою очередь вернула результат 1 и 1.123. Запрос 5 вернул ошибку ‘ORA-1722: invalid number’, когда Oracle попытался неявно преобразовать строку в число, так как ‘11.123.456’ не является корректным числом. Запрос 6 также вернул ошибку так как символ доллара не может бять неявно преобразован в число.
Неявная конвертация строки в дату возможна, когда строка удовлетворяет следующим шаблонам: [D|DD] separator1 [MON|MONTH] separator2][R|RR|YY|YYYY], где D и DD это день MON первые три буквы месяца, MONTH – полное название месяца. R и RR YY и YYYY отображают одну, две и четыре цифры года соответственно. Параметром separator1 и separator2 может быть практически любой спец символ, включая сюда пробел, табуляцию, знаки пунктуации и т.д. Таблица 10-2 показывает неявную конвертацию строки в дату, включая вызов функций работы с датами и результаты. Эти результаты предполагают, что система использует американскую локаль.
TIP Несмотря на то что неявная конвертация типов доступна, лучше использовать явный вызов функции конвертации перед использование данным в других функциях. Конвертация строки в число и дату использует маску форматирования.
Явная конвертация типов данных
Функции, которые конвертирует значение из одного типа данных в другой известны как явное преобразование типов. Они возвращают значение, которое будет гарантировано нужного типа данных и являются надёжным методом конвертации данных.
Число и дату можно явно конвертировать в строку используя функцию TO_CHAR. Строку можно явно конвертировать в число используя функцию TO_NUMBER. Функция TO_DATE используется для конвертации строку в DATE. Маски форматирования Oracle позволяют гибко контролировать процесс конвертации строки в число или дату.
Exam tip
Понимание широко используемых масок форматирования проверяется достаточно просто вопросами вида: какой результат вернёт вызов функций TO_CHAR(TO_DATE(’01-JAN-00′,’DD-MON-RR’),’Day’).
Использование функций TO_CHAR, TO_NUMBER и TO_DATE
При сертификации очень часто используются вопросы о функциях TO_NUMBER, TO_DATE и TO_CHAR с примерами для анализа. Обсуждение функции TO_CHAR разделим на две части: конвертация даты в строку и конвертация числа в строку. Такое разделение основано на том что для разных типов данных доступны разные маски форматирования. Помимо этих функций существует много других, но эти используется наиболее часто.
Использование функций конвертации
Во многих ситуациях возникает потребность в использовании функций конвертации, начиная от форматирования даты в отчётах и до проверки численных значений в символьных столбцах перед стартом арифметических вычислений.
Таблица 10-3 показывает синтаксис строчных функций конвертации данных
Необязательный параметр поддержки национального формата (nls_parameters) полезен для указания языка и форматирования, в котором названия дней, месяцев и разделители разрядов, целой и дробной части заранее предопределены. На рисунке 10-2 отображено представление NLS_SESSION_PARAMETERS которое содержит значения параментов NLS для текущей сессии. По умолчанию значение NLS_CURRENCY – знак доллара, но это можно изменить на уровне сессии. Например, для изменения символа валюты на строку ‘GBP’ можно выполнить запрос
ALTER SESSION SET NLS_CURRENCY=’GBP’
Рисунок 10-2 – Представление NLS_SESSION_PARAMETERS
Конвертация числа в строку используя функцию TO_CHAR
Функция TO_CHAR возвращает значение типа VARCHAR2. Когда входных параметром является число то доступны некоторые параметры форматирования. Синтаксис команды TO_CHAR(num, [format], [nls_parameter]). Параметр num обязательный и должен быть числом. Необязательный параметр format можно использовать для указания информации о форматировании, такой как длина, символ валюты, позиция разделителя дробной и целой части и разделитель разрядов (три разряда) и должен быть заключен в одинарные кавычки. Доступны различные опции форматирования и часть из них представлена в таблице 10-4. Рассмотрим два запроса
Query 1: select to_char(00001)||’ is a special number’ from dual;
Query 2: select to_char(00001, ‘0999999’)||’ is a special number’ from dual;
В запросе номер один у числа 00001 убираются ведущие нули, значение преобразуется в строку ‘1’ и возвращается результат ‘1 is a special number’. Зпрос номер два использует маску форматирования ‘0999999’ для числа 00001 преобразуя число в строку ‘0000001’ и возвращая результат ‘0000001 is a special number’. 0 и 6 девяток в маске форматирования указывают функции TO_CHAR что необходимо использовать ведущие нули, и длина строки должна быть 7. Таким образом строка, возвращаемая функцией TO_CHAR содержит семь символов.
Tip Конвертация чисел в строки надёжный способ убедиться что функция и SQL запрос в целом, который ожидает символьного значения, не вернёт ошибку когда встретится число. Конвертация чисел в строки часто используется для форматирования значений для отчетов. Маска форматирования поддерживает символ валюты, разделитель порядков и разделитель целой и дробной части, что часто используется при отображении финансовой информации.
Конвертация даты в строку используя функцию TO_CHAR
Вы можете использовать преимущества модели масок форматирования при конвертации ДАТЫ в практически любой вариант отображения даты как символьного значения используя функцию TO_CHAR. Синтаксис функции TO_CHAR(date1, [format], [nls_parameter]).
Только параметр date1 обязательный; тогда он должен быть значением, которое может неявно преобразоваться в строку. Необязательный параметр format регистрозависимый и должен быть обрамлён одинарными кавычками. Маска форматирования указывает какие лементы даты должы быть выбраны и как отображать названия элементов даты: полные названия или аббревиатуры. Названия дней и месяцев автоматически разделяются пробелом. Такое поведение можно изменить, используя параметр маски fill mode (fm). Указав в начале маски параметр fm, вы укажете Oracle о необходимости убрать все пробелы. Доступно много опций для маски форматирования, часть из которых отображена в таблице 10-5. Рассмотрим три запроса
Query 1: select to_char(sysdate)||’ is today»s date’ from dual;
Query 2: select to_char(sysdate,’Month’)||’is a special time’ from dual;
Query 3: select to_char(sysdate,’fmMonth’)||’is a special time’ from dual;
Если текущая системная дата 3 января 2009 года и по умолчанию формат отображения DD/MON/RR тогда запрос один вернёт строку ‘03/JAN/09 is todays date’. Во втором запросе обратите внимание на две детали: во-первых, только месяц выбирается из даты, и во-вторых так как маска форматирования регистрозавсимая и в запросе используется ‘Month’, то запрос вернёт ‘January is a special time’. Нет нужды добавлять пробел в начале литерала, так как функция TO_CHAR автоматически добавит пробел к названию месяца. Если бы маска во втором запросе была ‘MONTH’ то запрос вернул бы ‘JANUARY is a special time’. Параметр fm в третьем запросе препятствует добавлению пробелов и результатом будет ‘Januaryis a special time’. В таблице 10-5 предполагается что обрабатывается дата 2 июня 1975 года и текущий год 2009.
Параметры форматирования, связанные с неделей, кварталом, веком и другими более редко использующимися элементами даты показаны на рисунке 10-7. Столбец результата предполагает, что функция использовалась для работы с датой 24 сентября 1000 года, с маской форматирования указанной в столбец format element.
Компонент время в типе данных дата выбирается, используя модели форматирования в таблице 10-7. Результат рассчитывается функцией TO_CHAR используя дату 27 июня 2010 года время 21:35:13 с маской форматирования указанной в столбце format element.
Некоторые различные элементы, которые можно использовать в форматировании даты и времени перечислены в таблице 10-8. Знаки пунктуации используются для разделения элементов форматирования. Три типа суффиксов существуют для форматирования элементов. Более того, символьные литералы могут быть включены в модель форматирования если они заключены в двойные кавычки. Результаты в таблице 10-8 получены используя функцию TO_CHAR для даты 12 сентября 2008 года 14:31 с маской форматирования указанной в соответствующем столбце.
Таблица JOB_HISTORY хранит информацию о должностях сотрудника, которые он занимал в компании. Запрос на рисунке 10-3 выбирает информацию из этой таблицы о конце срока действия должности сотрудника для каждого сотрудинка на основании столбцов END_DATE, EMPLOYEE_ID и JOB_ID и форматирует результат в красивое предложение. Символьное выражение объединяется с функцией TO_CHAR в которой используется маска ‘fmDay «the «ddth «of» Month YYYY’. Параметр fm используется чтобы убрать пробелы в имени дня недели и месяца. Два литерата ограниченые двойными кавычками используются для добавления читабельности результату. Литерал “th” применяется к элементу даты чтобы сделать литературно правильным отображение даты как 17th или 31th. ‘Month’ в маске означает использовать полное имя месяца и наконец YYYY форматирует год как все четыре символа года.
Рисунок 10-3 – Запрос в таблицу JOB_HISTORY
select ‘Employee ‘||EMPLOYEE_ID||’ quit as ‘||JOB_ID||’ on ‘||TO_CHAR(END_DATE,’fmDay «the «ddth «of» Month YYYY’) «Quitting Date»
FROM JOB_HISTORY
ORDER BY END_DATE;
Несмотря на то что компонент «век» не отображается по умолчанию, он хранится в базе данных и доступен для запроса. Маска форматирования DD-MON-RR используется по умолчанию для ввода значений и отображения. Когда значение добавляется или изменяется если явно неуказан век, то используется век из функции SYSDATE. Формат RR отличается от формата YY и так как RR также использует значение столетия. Влияние значения столетия на формат RR легче понять если рассмотреть следующие принципы
- Если две последние цифры текущего года между 0 и 49, а в указанном значении даты две последние цифры года между 50 и 99 то используется предыдущий век. Предположим, что текущая дата 2 июня 2007 года. Значение века для даты 24-JUNE-94 года будет 20
- Если две цифры текущего года между 50-99 и указанной даты также между 55 и 99, то возвращается текущий век. Преположим что текущая дата 2 июня 1975 года. Тогда значение века для 24-JUL-94 будет 20.
- Если две цифры текущей даты между 50 и 99, а в укащанной дате год между 0 и 49 – то считается следующий век. Предположим, что текущая дата 2 июня 1975 года, тогда для значения 24-JUL-07 значение века будет 21.
Конвертация строки в дату используя функцию TO_DATE
Функция TO_DATE возвращает значение типа данных DATE. Строка, конвертируемая в дату может содержать все или часть компонентов, составляющих тип DATE. Когда строка содержащая только часть компонентов даты преобразуется в дату, Oracle использует значение по умолчанию для составления валидного значения типа DATE. Части строки сопоставляются с элементами даты используя маску (или модель) форматирования. Синтаксис функции TO_DATE(string1, [format], [nls_parameter]).
Только параметра string1 обязателен, и eсли маска форматирования не указана, string1 должна быть в формат неявно конвертируемом в дату. Необязательный параметр format используется практически всегда и должен быть заключён в одинарные кавычки. Маска форматирования идентича перечисленным в таблицах 10-5, 10-6, и 10-7. У функции TO_DATE есть модификатор fx, которые используется подобно параметру fm функции TO_CHAR. Параметр fx требует обязательного совпадения строки и маски форматирования. Если строка не совпадает с маской – возвращается ошибка. Рассмотрим несколько примеров
Query 1: select to_date(’25-DEC-2010′) from dual;
Query 2: select to_date(’25-DEC’) from dual;
Query 3: select to_date(’25-DEC’, ‘DD-MON’) from dual;
Query 4: select to_date(’25-DEC-2010 18:03:45′, ‘DD-MON-YYYY Hh34:MI:SS’) from dual;
Query 5: select to_date(’25-DEC-10′, ‘fxDD-MON-YYYY’) from dual;
Запрос 1 преобразует строку ’25-DEC-2010’ и строка может быть преобразована в дату используя маску DD-MON-YYYY. Дефис можно заменить на другой разделитель. Так как не было указано никакой информации о времени то используется значение по-умолчанию 00:00:00. Запрос 2 не может неявно преобразовать строку в дату, так как недостаточно информации и возвращается ошибка ORA-01840: input value is not long enough for date format. Указав маску DD-MON для строки ’25-DEC’ в запросе номер три, Oracle может преобразовать значение в дату, но так как год и время не указаны, в значении года будет использоваться значение года функции SYSDATE, а время установлено в полночь. Если текущий год будет 2009, то запрос 3 вернёт дату 25/DEC/09 00:00:00. Запрос 4 преобразует строку с явно указанными всеми компнонентами даты и времени. Запрос 5 использует параметра fx. Так как год в строке указан двумя символами, а требуемый формат предполагает четыре цифры года, то запрос возвращает ошибку ORA-01862: the numeric value does not match the length of the format item.
Конвертация строки в число используя функцию TO_NUMBER
Функция TO_NUMBER возвращает значение типа данных NUMBER. Исходная строка должна быть составлена таким образом, чтобы все несовместимые символы отсутствовали или были указаны в соответствующей маске форматирования. Синтаксис функции TO_NUMBER(string1, [format], [nls_parameter]). Только string1 является обязательным параметром, и если не указан параметр format то значение должно быть таким, чтобы была возможность неявно сконвертировать его в число. Маски форматирования идентичны перечисленным в таблице 10-4. Рассмотрим запросы
Query 1: select to_number(‘$1,000.55’) from dual;
Query 2: select to_number(‘$1,000.55′,’$999,999.99’) from dual;
Запрос один не может неявно преобразовать строку, так как она содержит знак валюты и разделители, которые явно неуказаны в маске, поэтому возвращается ошибка ORA-1722: invalid number. Запрос два находит символ валюты, запятой и точки в маске форматирования и несмотря на то что длина маски больше чем чем исходное значение в строке, возвращается число 1000.55
Exam tip
Функция TO_NUMBER конвертирует значение строки в число. Если вы используете число длиннее чем маска, возвращается ошибка. Если вы конвертируете число используя более длинную маску – возвращается значение исходной длины. Не путайте TO_NUMBER с TO_CHAR. Например TO_NUMBER(‘123.45’,’999.9’) вернёт ошибку, когда TO_CHAR(123.45,’999.9’) вернёт 123.6
Типы Данных | ora-sql.ru
Когда Вы идентифицируете столбец для таблицы, Вы должны обеспечить тип данных для столбца.
Есть несколько доступных типов данных:
Тип данных | Описание |
---|---|
VARCHAR2 (размер) | Символьные данные переменной длины (Максимальный размер должен быть определен: минимальный размер равен 1; максимальный размер равен 4000.) |
CHAR [(размер)] | Символьные данные фиксированной длиной размер в байтах (Минимальный размер и размер по умолчанию равны 1; максимальный размер равен 2000.) |
NUMBER [(p, s)] | Число имеющее точность p и масштаб s (Точность является общим количеством десятичных цифр, а масштаб является числом цифр справа от десятичной точки; точность может колебаться от 1 до 38, а масштаб может колебаться от –84 до 127.) |
DATE | Значения даты и времени, ближайшие к секунде между 1 января, 4712 до н.э. и 31 декабря, 9999 нашей эры. |
LONG | Символьные данные переменной длины (до 2 Гбайт) |
CLOB | Символьные данные (до 4 Гбайт) |
Тип данных | Описание |
---|---|
RAW(размер) | Необработанные двоичные данные длиной заданного размера (Максимальный размер должен быть определен: максимальный размер 2000.) |
LONG RAW | Необработанные двоичные данные переменной длины (до 2 Гбайт) |
BLOB | Двоичные данные (до 4 Гбайт) |
BFILE | Двоичные данные сохраненные во внешнем файле (до 4 Гбайт) |
ROWID | Число, представляющие уникальный адрес строки в ее таблице |
Указания
Столбец
LONG
не копируется, когда таблица создается, используя подзапрос.Слолбец
LONG
не может быть включен в предложениеGROUP BY
илиORDER BY
.Только один столбец
LONG
может использоваться на таблицу.Никакие ограничения не могут быть определены для столбца
LONG
.Вы можете использовать столбец
CLOB
, а не a столбецLONG
.
Далее: Получение Данных из Представления и Изменение Представления
7.2. Основные типы данных Oracle
Информация,
хранимая в базе данных, может быть
разнообразной: строки символов, числа,
даты и т.д. Для хранения информации СУБД
Oracle
поддерживает различные типы данных.
Рассмотрим основные из них.
При
дальнейшем изложении материала
необязательные параметры и синтаксические
конструкции будут указываться в
квадратных скобках.
7.2.1. Типы данных для хранения строк символов
Тип
CHARACTER
или CHAR
используется для хранения строк
фиксированной
длины.
Синтаксис:
CHARACTER[(длина)]
или CHAR[(длина)].
Для
хранения строк резервируется определенное
в параметре длина
пространство. При необходимости короткая
строка дополняется пробелами. Параметр
длина
является
необязательным. Если длина строки не
указана явно, она полагается равной 1.
Максимальное значение параметра длина
— 255 символов.
Тип
VARCHAR
используется для хранения строк
переменной длины. Для хранения строк
резервируется реально необходимое
пространство.
Синтаксис:
VARCHAR [(длина)].
Параметр
длина
является
необязательным. Если длина строки не
указана явно, она полагается равной 1
символу. Максимальное значение параметра
длина
– 4000 символов.
Тип
VARCHAR2
(применяется только в Oracle) используется
для хранения строк переменной длины.
Для хранения строк резервируется реально
необходимое пространство. Основная
причина введения типа VARCHAR2 состоит в
том, что фирма Oracle
декларирует неизменность этого типа в
более поздних реализациях Oracle, в то
время как тип VARCHAR будет соответствовать
требованиям стандартов SQL.
Синтаксис:
VARCHAR2(длина).
Длина
строки должна
быть указана явно.
Минимальное значение параметра длина
– 1 символ, максимальное значение
параметра длина – 4000 символов.
7.2.2. Типы данных для хранения чисел
Тип
INTEGER
используется для представления целых
чисел в диапазоне от -231
до 231.
Синтаксис:
INTEGER или INT.
Тип
NUMBER
(применяется только в Oracle) используется
для представления чисел с заданной
точностью.
Синтаксис:
NUMBER [(точность
[, масштаб])].
Если
значение параметра точность
не указано явно, оно полагается равным
38. Значение параметра масштаб
по умолчанию предполагается равным 0.
Значение параметра точность
может изменяться от 1 до 38, значение
параметра масштаб
может изменяться от -84 до 127. Использование
отрицательных
значений
масштаба
означает сдвиг десятичной точки в
сторону старших разрядов. Например,
определение NUMBER (7,-3) означает округление
до тысяч.
В
таблице 3 приведены представления числа
123456.789 с различной точностью и масштабом.
Таблица
3. Представления числа 123456.789
с
различной точностью и масштабом.
Определение | Представление при |
NUMBER | 123456 |
NUMBER(7,1) | 123456.7 |
NUMBER(5,2) | ошибка |
NUMBER(8,3) | ошибка |
NUMBER(9,3) | 123456.789 |
NUMBER(7,-2) | 123500 |
Для
совместимости с другими СУБД на уровне
запросов СУБД Oracle поддерживает типы
данных DECIMAL и NUMERIC. Типы DECIMAL И NUMERIC
полностью эквивалентны типу NUMBER.
Сопоставление типов данных Oracle с PostgreSQL / Хабр
Один из самых первых и распространенных вопросов в процессе миграции базы данных с Oracle на PostgreSQL — «Как типы данных Oracle сопоставимы с типами PostgreSQL?».
Простой ответ заключается в том, что они очень совместимы и легко сопоставляются. В приведенной ниже таблице показано сравнение и сопоставление типов данных Oracle с PostgreSQL для наиболее распространенных типов Oracle. Эти базовые типы данных лишь поверхностно демонстрируют то, что может сделать PostgreSQL, — она имеет очень богатую систему типов и поддерживает настраиваемые типы. В состав встроенных типов входят JSON, массивы, UUID, IP-адреса, геометрические типы, перечисления и многое другое.
Тип данных Oracle | Тип данных PostgreSQL | Комментарии |
---|---|---|
Char() | Char() | |
Char(1) | Char(1) | Если используется в качестве булевого флага, то лучше использовать тип данных boolean |
Varchar2() | Varchar() | |
Timestamp | Timestamptz | Вообще, мы рекомендуем хранить timestamp в качестве timestamp с часовым поясом (timestamptz), что эквивалентно timestamp Oracle с местным часовым поясом. Таким образом сохраняются все значения в UTC, даже если сервер или клиент базы данных находятся в разных часовых поясах, что позволяет избежать множества проблем. Но, возможно, какой-то код приложения должен использовать типы, имеющие информацию о часовом поясе — если это важный момент, используйте timestamp без часового пояса, чтобы минимизировать изменения миграции. |
Date | Timestamptz | PostgreSQL тип “Date” хранит только дату и не хранит время |
Date | Date | |
Number() | Numeric() | PostgreSQL Numeric похож на Oracle Number с переменной диапазоном и точностью, поэтому может использоваться для любых числовых полей, но иногда более предпочтительны целочисленные поля и числа с плавающей запятой. |
Number(5,0) | Integer | Integer и Bigint работают лучше, чем Number (), когда используются для joinов больших таблиц, поэтому предпочтительнее сопоставление с Int для полей первичного и внешнего ключей, обычно используемых для joinов. |
Number(10,0) | Bigint | |
Number( ,2) | Numeric( ,2) | PostgreSQL Numeric (, 2) идеально подходит для денежных типов, поскольку он обладает конкретной точностью (если вы не имеете дело с йеной и не нуждаетесь в типе (, 0)). Тип «money» эквивалентен типу numeric по точности, но иногда вызывает неожиданности для приложений из-за неявных предположений о форматировании. Никогда не используйте представление с плавающей запятой (float / double) из-за потенциального округления во время арифметики. |
CLOB | Text | Text намного проще в использовании, без функций LOB, просто рассматривайте его как символьное поле. Может хранить до 1 ГБ текста. |
Long | Text | |
BLOB | Bytea | |
Long raw | ||
Raw | ||
XMLTYPE | XML | |
UROWID | OID | Использование OID в Postgres не эквивалентно и не обеспечивает такое же преимущество в производительности, что и ROWID, используемое в Oracle. |
Oracle / PLSQL: типы данных
Ниже приводится список типов данных, доступных в Oracle / PLSQL, который включает символьные, числовые, дату / время, типы данных LOB и rowid.
Типы данных символов
Ниже приведены типов данных символов в Oracle / PLSQL:
Синтаксис типа данных | Oracle 9i | Оракул 10g | Оракул 11g | Пояснение |
---|---|---|---|---|
знак (размер) | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Где размер — количество символов для хранения. Струны фиксированной длины. Мягкое пространство. |
nchar (размер) | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Где размер — количество символов для хранения. Строка NLS фиксированной длины. |
nvarchar2 (размер) | Максимальный размер 4000 байт. | Максимальный размер 4000 байт. | Максимальный размер 4000 байт. | Где размер — количество символов для хранения. Строка NLS переменной длины. |
varchar2 (размер) | Максимальный размер 4000 байт. Максимальный размер 32 КБ в PLSQL. | Максимальный размер 4000 байт. Максимальный размер 32 КБ в PLSQL. | Максимальный размер 4000 байт. Максимальный размер 32 КБ в PLSQL. | Где размер — количество символов для хранения. Строка переменной длины. |
длинный | Максимальный размер 2 ГБ. | Максимальный размер 2 ГБ. | Максимальный размер 2 ГБ. | Струны переменной длины. (обратная совместимость) |
сырые | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Максимальный размер 2000 байт. | Двоичные строки переменной длины |
длинное сырье | Максимальный размер 2 ГБ. | Максимальный размер 2 ГБ. | Максимальный размер 2 ГБ. | Двоичные строки переменной длины. (обратная совместимость) |
Числовые типы данных
Ниже приведены числовых типов данных в Oracle / PLSQL:
Синтаксис типа данных | Oracle 9i | Оракул 10g | Оракул 11g | Пояснение |
---|---|---|---|---|
номер (п, с) | Точность может варьироваться от 1 до 38. Шкала может находиться в диапазоне от -84 до 127. | Точность может варьироваться от 1 до 38. Масштаб может находиться в диапазоне от -84 до 127. | Точность может варьироваться от 1 до 38. Масштаб может находиться в диапазоне от -84 до 127. | Где p — точность, а s — масштаб. Например, число (7,2) — это число, у которого 5 цифр перед десятичной дробью и 2 цифры после десятичной. |
числовой (п, с) | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Где p — точность, а s — масштаб. Например, numeric (7,2) — это число, у которого 5 цифр перед десятичной дробью и 2 цифры после десятичной. |
поплавок | ||||
дек (п, с) | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Где p — точность, а s — масштаб. Например, dec (3,1) — это число, у которого 2 цифры перед десятичной дробью и 1 цифра после десятичной. |
десятичное (p, s) | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Точность может варьироваться от 1 до 38. | Где p — точность, а s — масштаб. Например, десятичное (3,1) — это число, которое имеет 2 цифры перед десятичной и 1 цифру после десятичной дроби. |
целое | ||||
внутр | ||||
smallint | ||||
реальный | ||||
двойной точности |
Дата / время Типы данных
Ниже приведены типов данных даты / времени в Oracle / PLSQL:
Синтаксис типа данных | Oracle 9i | Оракул 10g | Оракул 11g | Пояснение |
---|---|---|---|---|
дата | Дата между 1 января 4712 г. до н.э. и 31 декабря 9999 г. | Дата между 1 января 4712 г. до н.э. и 31 декабря 9999 г. | Дата между 1 января 4712 г. до н.э. и 31 декабря 9999 г. | |
отметка времени (точность долей секунды ) | с точностью до долей секунды должно быть числом от 0 до 9. (по умолчанию 6) | точность до дробных секунд должно быть числом от 0 до 9. (по умолчанию 6) | с точностью до долей секунды должно быть числом от 0 до 9.(по умолчанию 6) | Включает год, месяц, день, час, минуту и секунды. Например: |
отметка времени (точность долей секунды ) с часовым поясом | Точность долей секунд должно быть числом от 0 до 9. (по умолчанию 6) | точность до долей секунды должно быть числом от 0 до 9. (по умолчанию 6) | с точностью до долей секунды должно быть числом от 0 до 9.(по умолчанию 6) | Включает год, месяц, день, час, минуту и секунды; со значением смещения часового пояса. Например: |
метка времени ( с точностью до долей секунды ) с местным часовым поясом | точность до долей секунды должно быть числом от 0 до 9. (по умолчанию 6) | с точностью до долей секунды должно быть числом от 0 до 9.(по умолчанию 6) | точность до долей секунды должно быть числом от 0 до 9. (по умолчанию 6) | Включает год, месяц, день, час, минуту и секунды; с часовым поясом, выраженным как часовой пояс сеанса. Например: |
год интервала (точность год ) до месяца | с точностью до года — количество цифр в году.(по умолчанию 2) | с точностью до года — количество цифр в году. (по умолчанию 2) | с точностью до года — количество цифр в году. (по умолчанию 2) | Период времени в годах и месяцах. Например: |
интервал дня (точность дней ) до секунды ( точность долей секунды ) | с точностью до дня должно быть числом от 0 до 9.(по умолчанию 2) с точностью до долей секунды должно быть числом от 0 до 9. (по умолчанию 6) | с точностью до дня должно быть числом от 0 до 9. (по умолчанию 2) Точность долей секунд должно быть числом от 0 до 9. (по умолчанию 6) | с точностью до дня должно быть числом от 0 до 9. (по умолчанию 2) с точностью до долей секунды должно быть числом от 0 до 9.(по умолчанию 6) | Период времени, хранящийся в днях, часах, минутах и секундах. Например: |
Типы данных больших объектов (LOB)
Ниже приведены типов данных LOB в Oracle / PLSQL:
Синтаксис типа данных | Oracle 9i | Оракул 10g | Оракул 11g | Пояснение |
---|---|---|---|---|
файл | Максимальный размер файла 4 ГБ. | Максимальный размер файла 2 32 -1 байт. | Максимальный размер файла 2 64 -1 байт. | Локаторы файлов, указывающие на двоичный файл в файловой системе сервера (вне базы данных). |
капля | Хранить до 4 ГБ двоичных данных. | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов). | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов). | Хранит большие неструктурированные двоичные объекты. |
гвоздь | Хранить до 4 ГБ символьных данных. | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов) символьных данных. | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов) символьных данных. | Хранит однобайтовые и многобайтовые символьные данные. |
нклоб | Хранить до 4 ГБ символьных текстовых данных. | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов) символьных текстовых данных. | Хранить до (4 гигабайт -1) * (значение параметра CHUNK хранилища больших объектов) символьных текстовых данных. | Хранит данные Unicode. |
Типы данных Rowid
Ниже приведены типов данных Rowid в Oracle / PLSQL:
Синтаксис типа данных | Oracle 9i | Оракул 10g | Оракул 11g | Пояснение |
---|---|---|---|---|
рядный | Формат rowid: BBBBBBB.RRRR.FFFFF Где BBBBBBB — это блок в файле базы данных; | Формат rowid: BBBBBBB.RRRR.FFFFF Где BBBBBBB — это блок в файле базы данных; | Формат rowid: BBBBBBB.RRRR.FFFFF Где BBBBBBB — это блок в файле базы данных; | Двоичные данные фиксированной длины. Каждая запись в базе данных имеет физический адрес или rowid . |
urowid (размер) | Универсальный рядный. Где размер является необязательным. |
.
Oracle PL / SQL Типы данных: логическое значение, число, дата [Пример]
- Home
Testing
- Back
- Agile Testing
- BugZilla
- Cucumber
- 9000 Testing 9000 Database Testing 9000 Jmeter
- JIRA
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- 0003
- Selenium
- SoapUI
- Управление тестированием
- TestLink
Тестирование
SAP
- Назад
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- Crystal Reports
- Заработная плата
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- SAP Back Tutorials
- 9007
- Apache
- AngularJS
- ASP.Net
- C
- C #
- C ++
- CodeIgniter
- СУБД
- JavaScript
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux
js
- Perl
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL
- SQL
000
000
0003 SQL
000
0003 SQL
000
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Создание веб-сайта
- CCNA
- Облачные вычисления
- 0003 COBOL
- 000 Compiler
- 9000 Встроенный
- 000 9000 Compiler
- Ethical Hacking
- Учебники по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сети
- Операционная система
- 0003
- Назад
- Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
- HBOps
- HBOps
- MicroStrategy
- MongoDB
0003
0003
.
сопоставлений типов данных Oracle — ADO.NET
- 3 минуты на чтение
В этой статье
В следующей таблице перечислены типы данных Oracle и их сопоставления с OracleDataReader.
В следующей таблице перечислены типы данных Oracle и типы данных .NET Framework ( System.Data.DbType и OracleType) для использования при связывании их в качестве параметров.
Тип данных Oracle | Перечисление DbType для привязки в качестве параметра | Перечисление OracleType для привязки в качестве параметра | Замечания |
---|---|---|---|
BFILE | B Файл | Oracle позволяет привязать BFILE только как параметр BFILE . Поставщик данных .NET для Oracle не создает его автоматически, если вы пытаетесь привязать значение, отличное от BFILE, , например byte [] или OracleBinary. | |
BLOB | Капля | Oracle позволяет привязать BLOB только как параметр BLOB . Поставщик данных .NET для Oracle не создаст его автоматически, если вы попытаетесь привязать значение, отличное от BLOB, , например byte [] или OracleBinary. | |
СИМВОЛ | AnsiStringFixedLength | Char | |
CLOB | Гребень | Oracle позволяет привязать CLOB только как параметр CLOB .Поставщик данных .NET для Oracle не создает его автоматически, если вы пытаетесь привязать значение, отличное от CLOB , например System.String или OracleString. | |
ДАТА | Дата и время | Дата и время | |
ПОПЛАВОК | Одинарное, двойное, десятичное | Поплавок, двойной, номер | Размер определяет систему .Data.DBType и OracleType. |
ЦЕЛОЕ | SByte, Int16, Int32, Int64, Decimal | SByte, Int16, Int32, Number | определяет System.Data.DBType, и OracleType. |
ИНТЕРВАЛ ГОДА К МЕСЯЦУ | Int32 | Интервал Год К Месяц | OracleType доступен только при использовании клиентского и серверного программного обеспечения Oracle 9i. |
ИНТЕРВАЛ ДО ВТОРОГО | Объект | IntervalDayToSecond | OracleType доступен только при использовании клиентского и серверного программного обеспечения Oracle 9i. |
ДЛИННЫЙ | AnsiString | LongVarChar | |
ДЛИННЫЙ RAW | двоичный | LongRaw | |
NCHAR | StringFixedLength | NChar | |
NCLOB | NClob | Oracle допускает привязку NCLOB только как параметр NCLOB .Поставщик данных .NET для Oracle не создает его автоматически, если вы пытаетесь привязать значение, отличное от NCLOB , например System.String или OracleString. | |
НОМЕР | VarNumeric | Номер | |
NVARCHAR2 | Строка | NVarChar | |
RAW | двоичный | Необработанный | |
REF КУРСОР | Курсор | Для получения дополнительной информации см. Oracle REF CURSORs. | |
ROWID | AnsiString | Ряд | |
ТАМПЕР ВРЕМЕНИ | Дата и время | Отметка времени | OracleType доступен только при использовании клиентского и серверного программного обеспечения Oracle 9i. |
ВРЕМЯ С МЕСТНЫМ ЧАСОВЫМ ПОЯСОМ | Дата и время | Метка времени Местная | OracleType доступен только при использовании клиентского и серверного программного обеспечения Oracle 9i. |
ВРЕМЯ С ЧАСОВЫМ ПОЯСОМ | Дата и время | Метка времени с Tz | OracleType доступен только при использовании клиентского и серверного программного обеспечения Oracle 9i. |
НЕПОДПИСАННОЕ ЦЕЛОЕ | байт, UInt16, UInt32, UInt64, десятичный | байт, UInt16, Uint32, номер | определяет System.Data.DBType, и OracleType. |
VARCHAR2 | AnsiString | ВарЧар |
Значения InputOutput , Output и ReturnValue ParameterDirection , используемые свойством Value объекта OracleParameter, являются типами данных .NET Framework, если только входное значение не является типом данных Oracle (например, OracleNumber или OracleString). Это не относится к типам данных REF CURSOR , BFILE или LOB .
См. Также
.
Oracle number тип данных — qaru
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.