0
点赞
收藏
分享

微信扫一扫

oracle/mysql/lightdb/postgresql java jdbc类型映射

就是耍帅 2022-12-10 阅读 139

MySQL数据类型

JAVA数据类型

JDBC TYPE

普通变量类型

主键类型

BIGINT

Long

BIGINT

支持

支持

TINYINT

Byte

TINYINT

支持

不支持

SMALLINT

Short

SMALLINT

支持

不支持

MEDIUMINT

Integer

INTEGER

支持

支持

INTEGER

Integer

INTEGER

支持

支持

INT

Integer

INTEGER

支持

支持

FLOAT

Float

REAL

支持

不支持

DOUBLE

Double

DOUBLE

支持

不支持

DECIMAL

BigDecimal

DECIMAL

支持

不支持

NUMERIC

BigDecimal

DECIMAL

支持

不支持

CHAR

String

CHAR

支持

不支持

VARCHAR

String

VARCHAR

支持

不支持

TINYBLOB

DataTypeWithBLOBs.byte[]

BINARY

不支持

不支持

TINYTEXT

String

VARCHAR

支持

不支持

BLOB

DataTypeWithBLOBs.byte[]

BINARY

不支持

不支持

TEXT

DataTypeWithBLOBs.String

LONGVARCHAR

不支持

不支持

MEDIUMBLOB

DataTypeWithBLOBs.byte[]

LONGVARBINARY

不支持

不支持

MEDIUMTEXT

DataTypeWithBLOBs.String

LONGVARCHAR

不支持

不支持

LONGBLOB

DataTypeWithBLOBs.byte[]

LONGVARBINARY

不支持

不支持

LONGTEXT

DataTypeWithBLOBs.String

LONGVARCHAR

不支持

不支持

DATE

Date

DATE

支持

不支持

TIME

Date

TIME

支持

不支持

YEAR

Date

DATE

不支持

不支持

DATETIME

Date

TIMESTAMP

支持

不支持

TIMESTAMP

Date

TIMESTAMP

支持

不支持

  以下是商业数据库的。 

​​postgresql/lightdb​​ 

java.sql.Types 值

Java 类型

IBM DB2

Oracle

Sybase

SQL

Informix

 int8

BIGINT

java.lang.long

BIGINT

NUMBER (38, 0)

BIGINT

BIGINT

INT8

 

BINARY

byte[]

CHAR FOR BIT DATA

RAW

BINARY

IMAGE

BYTE

 

BIT

java.lang.Boolean

N/A

BIT

BIT

BIT

BIT

 bytea/blob

BLOB

byte[]

BLOB

BLOB

BLOB

BLOB

BLOB

 bpchar/char

CHAR

java.lang.String

CHAR, GRAPHIC

CHAR

CHAR

CHAR

CHAR

 text

CLOB

java.lang.String

CLOB, DBCLOB

CLOB

CLOB

CLOB

CLOB

 

DATE

java.sql.Date

DATE

DATE

DATE

DATE

DATE

 

DECIMAL

java.math.BigDecimal

DECIMAL

NUMBER

DECIMAL, MONEY, SMALLMONEY

DECIMAL

DECIMAL

 

DOUBLE

java.lang.Double

DOUBLE

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

DOUBLE PRECISION

 

FLOAT

java.lang.Double

FLOAT

FLOAT

FLOAT

FLOAT

FLOAT

 int4

INTEGER

java.lang.Integer

INTEGER

INTEGER

INT

INTEGER

INTEGER

 

JAVA_OBJECT

java.lang.Object

JAVA_OBJECT

JAVA_OBJECT

JAVA_OBJECT

JAVA_OBJECT

OPAQUE

 bytea

LONGVARBINARY

byte[]

LONG VARCHAR FOR BIT DATA

LONG RAW

IMAGE

IMAGE

BYTE

 TEXT

LONGVARCHAR

java.lang.String

LONG VARCHAR, LONG VARGRAPHIC

LONG

TEXT

TEXT

TEXT

number/numeric

NUMERIC

java.math.BigDecimal

NUMERIC

NUMBER

NUMERIC

NUMERIC

NUMERIC

 

OTHER

java.lang.Object

OTHER

OTHER

OTHER

OTHER

OTHER

 

REAL

java.lang.Float

REAL

REAL

REAL

REAL

REAL

 int2

SMALLINT

java.lang.Integer

SMALLINT

SMALLINT

SMALLINT

SMALLINT

SMALLINT

 time

TIME

java.sql.Time

TIME

无对应,pg time无日期部分,且不支持0日期,所以无法计算合理值。

TIME

TIME

DATETIME HOUR TO SECOND

 timestamp/datetime(sysdate)

TIMESTAMP

java.sql.Timestamp

TIMESTAMP

timestamp

DATETIME, SMALLDATETIME

DATETIME

DATETIME YEAR TO FRACTION (5)

timestamptz

pg的时区格式为+10

2022-07-05 21:08:53.598693+08

 

 

 

timestamp with time zone

需要注意的是,oracle的时区格式为+10:00

 

 

 

 

TINYINT

java.lang.Bute

SMALLINT

TINYINT

TINYINT

TINYINT

TINYINT

 

VARBINARY

byte[]

VARCHAR FOR BIT DATA

RAW

VARBINARY

IMAGE

BYTE

 varchar/varchar2/text

VARCHAR

java.lang.String

VARCHAR, VARGRAPHIC

VARCHAR

VARCHAR

VARCHAR

VARCHAR

 

  Oracle ResultSetMetaData getPrecision/getScale有一个bug,count(*) as xxx、abs(col) as xxx,这样xxx是无法返回正确的Scale和Precision的,要想这些情况下返回正确的值,需要使用明确的cast(xxx as datatype)。参见https://stackoverflow.com/questions/1410267/oracle-resultsetmetadata-getprecision-getscale



举报

相关推荐

0 条评论