【问题标题】:How to compare money type data in azure search service?如何比较 Azure 搜索服务中的货币类型数据?
【发布时间】:2017-08-09 18:40:55
【问题描述】:

我有一个 azure 搜索服务,其中包含一些名为“价格”的货币类型数据,但在尝试排序或过滤时遇到了问题。

测试查询表达式为“&seach=*&$orderby=price desc”,返回结果见图 As you can see,the money type automatic convert to string type thus the sort result is compare the string

我担心将money类型更改为double类型会导致一些计算错误。有人知道如何在不更改数据类型的情况下解决这个问题吗?

【问题讨论】:

  • 3年3个月过去了,这还是个很痛苦的话题:/

标签: azure odata azure-cognitive-search


【解决方案1】:

您的索引架构中的 price 字段的数据类型似乎是 Edm.String - 这就是为什么这些值被排序为字符串的原因。您需要将价格存储为数字。目前 Azure 搜索不支持货币或小数数据类型,因此您需要使用 Edm.DoubleEdm.Int32Edm.Int64 等数字类型之一。

您可以在Azure Search UserVoice 上添加金钱/十进制数据类型的建议。

【讨论】:

  • 感谢您的回答!我担心一旦将数据类型更改为数值类型会导致一些计算错误?
  • 您没有在 Azure 搜索中执行算术计算,所以不确定您所说的“计算错误”是什么意思。
  • 哦。我很抱歉表达不清楚。我只是担心使用浮点数可能会导致一些错误。
  • 一种解决方法是使用 Edm.Int64 并忽略小数。例如,对于美元,您可以将 1.31 美元表示为 131
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2019-02-20
相关资源
最近更新 更多