我需要将 Java 的java.math.BigInteger
数字存储在 SQL 中。我可以放心地假设这些数字将是正数,并且比在创建表时已知2^k
的一些数字要少。k
让我们说k = 256
。
如何将它存储在 RDBMS 中,以便我进行比较(<, >, =
等)。
我目前正在转换为字节数组并将它们存储为VARBINARY(k+1)
.
我也可以将它们存储起来,就VARCHAR
好像这有帮助一样。我需要一种独立于 DBMS 的方式来做到这一点。
EDIT1:跟进下面 JBNizet 的评论。我需要执行以下类型的 SQL 查询:
SELECT * FROM myTable WHERE bigInteger > 100
UPDATE myTable SET bigInteger = bigInteger + 10 WHERE bigInteger = 123
EDIT2:可以VARCHAR
通过一些努力与词典排序进行比较。但是,增量给出了下面给出的奇怪行为(在 SQLite 上测试):
CREATE TABLE T(Id INTEGER PRIMARY KEY, Name VARCHAR, test VARCHAR);
INSERT INTO T VALUES(1,'Tom', '000030000000000000000000000000');
SELECT * FROM T;
1|Tom|000030000000000000000000000000
UPDATE T SET test = test+1;
SELECT * FROM T;
1|Tom|3.0e+25