在Cassandra中,我应该使用什么类型来存储像“999999.99”这样的值?

rseugnpd  于 2023-06-22  发布在  Cassandra
关注(0)|答案(2)|浏览(115)

我想在表中添加一个price列,以便能够存储从0.0999999.99的值。我试过price DECIMAL(8,2),但似乎不起作用。如何存储这样的值?
我也想知道是否会有任何前后处理需要,因为我在后端使用NodeJS/TypeScript处理所有的数值,使用number类型!
我还想知道是否使用字符串类型代替它是一个更好的主意?
编辑:例如,如果我尝试

CREATE TABLE IF NOT EXISTS products.test(
  id TEXT PRIMARY KEY,
  price DECIMAL(8,2));

我得到:
语法异常:第3行:15输入处没有可行的替代方案'(')(..文本主键,价格小数
但下面的操作没有问题:

CREATE TABLE IF NOT EXISTS products.test(
  id TEXT PRIMARY KEY,
  price INT);
rdlzhqv9

rdlzhqv91#

您可以利用decimal类型,甚至在Cassandra中使用float数据类型。请参阅https://cassandra.apache.org/doc/latest/cassandra/cql/types.html了解更多详细信息。而且,使用NodeJS Driver,https://docs.datastax.com/en/developer/nodejs-driver/latest/features/datatypes/ CQL decimal数据类型Map到BigDecimal JS类型。float CQL数据类型Map到Number JS类型等等。

zed5wv10

zed5wv102#

您的语法不正确,这就是SyntaxException的原因。
不可能在CQL中指定精度,因为decimal类型是可变精度的Java类型。
只需将列声明为decimal类型,例如:

CREATE TABLE decimals (
    id int PRIMARY KEY,
    price decimal
)

然后处理代码中的精确度。干杯!

相关问题