Delphi与各数据库数据类型比较

时间:2023-12-12 09:29:32

Delphi数据类型与各数据库数据类型对比如下表,如有具体说明见表中脚注:

Delphi

Type

Oracle Types

SQL Server

Types

MySQL

Types [1]

InterBase

Types

PostgreSQL

Types

SQLite

Types

ftSmallint

NUMBER(p, 0)[2] 
(p < 5)

SMALLINT

TINYINT(M) (M > 1)
SMALLINT

SMALLINT

SMALLINT

TINYINT
SMALLINT

ftWord

-

TINYINT

TINYINT(M) UNSIGNED (M > 1)
SMALLINT UNSIGNED
YEAR

-

-

-

ftInteger

NUMBER(p, 0)[2]
(4 < p < 10)

INT

MEDIUMINT
MEDIUMINT UNSIGNED
INT

INTEGER

INTEGER

INTEGER
INT

ftLargeint

NUMBER(p, 0)[2] 
(9 < p < 19)

BIGINT

BIT 
INT UNSIGNED
BIGINT
BIGINT UNSIGNED

BIGINT

BIGINT

BIGINT

ftFloat

NUMBER(p, s)[2] 
BINARY FLOAT(FLOAT)
BINARY DOUBLE

DECIMAL(p, s)[3] 
FLOAT
REAL

DECIMAL(p, s)[3] 
FLOAT
DOUBLE

NUMBER(p, s)[3] 
FLOAT
DOUBLE PRECISION

DECIMAL[3] 
REAL
DOUBLE PRECISION

DECIMAL(p, s)[3]
FLOAT
DOUBLE PRECISION

ftBCD

NUMBER(p, s)[2] 
(p < 15) and (s < 5)

DECIMAL(p, s)[3] 
(p < 15) and (s < 5)

DECIMAL(p, s)[3] 
(p < 15) and (s < 5)

DECIMAL(p, s)[3] 
(p < 15) and (s < 5)

DECIMAL[3]

DECIMAL[3]

ftFMTBcd

NUMBER(p, s)[2] 
(14 < p < 39) and> 
(4 < s < 39)

DECIMAL(p, s) 
(14 < p < 39) and 
(4 < s < 39)

DECIMAL(p, s)[3] 
(14 < p < 39) and
(4 < s < 39)

DECIMAL(p, s)[3] 
(14 < p < 19) and
(4 < s < 19)

DECIMAL[3]

DECIMAL[3]

ftCurrency

-

MONEY
SMALLMONEY

-

-

MONEY

MONEY

ftBoolean

-

BIT

TINYINT[4] 
BOOL[4] 
BOOLEAN[4]

BOOLEAN

BOOLEAN

BOOLEAN

ftString

VARCHAR2
NVARCHAR2
VARCHAR
CHAR
NCHAR
RAW[5] 
INTERVAL DAY TO SECOND
INTERVAL DAY TO MONTH
ROWID
UROWID

CHAR
VARCHAR

CHAR
VARCHAR
ENUM
SET
BINARY[6] 
VARBINARY[6]

CHAR
VARCHAR

CHAR
VARCHAR

CHAR
VARCHAR

ftWideString

See note [7]

NCHAR
NVARCHAR

See note [7]

See note [7]

See note [7]

See note [7]

ftMemo

LONG
Also see note [8]

TEXT
NTEXT[9]

TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT

BLOB TEXT

TEXT

TEXT
CLOB

ftWideMemo

See note[10]

NTEXT[11]

See note[10]

See note[10]

See note[10]

See note[10]

ftOraClob

CLOB
NCLOB

-

-

-

-

-

ftBlob

LONG RAW

IMAGE

TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
Spatial Data Types

BLOB BINARY

BYTEA

BLOB

ftOraBlob

BLOB

-

-

-

LARGE OBJECT

-

ftBytes

-

BINARY
TIMESTAMP

BINARY

-

-

-

ftVarBytes

RAW

VARBINARY

VARBINARY

CHAR
VARCHAR
(CHARSET = OCTETS)

-

BINARY
VARBINARY

ftDate

-

-

DATE

DATE

DATE

DATE

ftDateTime

DATE

DATE

DATETIME

TIMESTAMP

TIMESTAMP

TIMESTAMP
DATETIME

ftTime

-

-

TIME

TIME

TIME

TIME

ftTimeStamp

TIMESTAMP
TIMESTAMP WITH TIMEZONE

-

-

-

-

-

ftCursor

REF CURSOR

-

-

-

REFCURSOR

-

ftGuid

-

UNIQUEIDENTIFIER

-

-

-

-

ftVariant

-

SQL_VARIANT

-

-

-

-

NOT SUPPORTED

BFILE
OBJECT
XML

CURSOR
XML
TABLE

-

-

-

-

[1] – 如果FieldsAsString 选项被设置 True,则除BLOB和TEXT数据类型外,全部做为ftString来处理

[2] – Oracle NUMBER数据类型与Delphi数据类型对应方式:

if scale equals zero, provider checks values of the specific options to choose the correct Delphi type in the following order:

1.1 field precision is less or equal Precision Smallint (default is 4) - uses ftSmallint;
1.2 field precision is less or equal Precision Integer (default is 9) - uses ftInteger;
1.3 field precision is less or equal Precision LargeInt (default is 18) - uses ftLargeint;

if scale is greater than zero, the appropriate Delphi type is chosen using the following sequence of rules:.

2.1 field precision is less or equal PrecisionFloat (default is 0) - uses ftFloat;
2.2 EnableBCD is True and field precision, scale is less or equal PrecisionBCD (default is 14,4) - uses ftBCD;
2.3 EnableFMTBCD is True and field precision, scale is less or equal PrecisionFMTBCD (default is 38,38) - uses ftFMTBCD;
2.4 uses ftFloat.

[3] - The appropriate Delphi type is chosen using the following sequence of rules:

EnableBCD is True and field precision, scale is less or equal 14,4 - uses ftBCD;

EnableFMTBCD is True - uses ftFMTBCD;

uses ftFloat.

[4] - If the EnableBoolean option is True

[5] - If the RawAsString option is True

[6] - If the BinaryAsString is True

[7] - If the UseUnicode option is True, all server types mapped to ftString will be mapped to ftWideString.

[8] - If the LongStrings option is False, and the field length is greater than 255, all server types mapped to ftString will be mapped to ftMemo.

[9] - For all Delphi versions prior to BDS 2006.

[10] - If the UseUnicode option is True, in BDS 2006 and later versions all server types mapped to ftMemo will be mapped to ftWideMemo.

[11] - For BDS 2006 and higher IDE versions.