如何在postgresql中表示小数字?

时间:2016-07-05 14:42:32

标签: java postgresql

我想在0-23表中表示来自postgresql的数字,并将它们编入索引。

此类数据的最佳数据类型是什么?

postgres=smallint
java=short

或者我可以做得更好吗? postgres中还有一个TINYINT数据类型,但是我如何在java中表示例如“23”?

1 个答案:

答案 0 :(得分:1)

你可以在PostgreSQL中使用"char"类型(注意双引号,它们很重要),它只占用一个字节并在Java中使用byte

CREATE TABLE chartest (
   id integer primary key,
   c "char");

INSERT INTO chartest (id, c) VALUES (1, 42::"char");

当您查询值时,您必须将表达式强制转换为integer,以便您可以使用getByte(int)方法:

java.sql.Statement st = conn.createStatement();
java.sql.ResultSet rs = st.executeQuery("SELECT c::integer FROM chartest WHERE id = 1");
rs.next();
System.out.println(rs.getByte(1));

注意:属性始终根据数据类型的typalign属性进行对齐。
例如,如果您在上面的示例中的列integer之后立即添加类型为c的新列,则会在这些列之间浪费三个字节并将其清空。
因此,如果您想节省空间,必须小心物理布局。

您可以通过这种方式在数据库上节省一些空间,但我不知道是否值得付出努力。如果我是你,我会试验看它是否有所回报。