SQL BETWEEN 价格存储为字符串

SQL BETWEEN prices stored as string

我 运行 遇到了一个问题。我将价格作为以下格式的字符串存储在我的数据库中:14.500,00199,95。一段时间后,我创建了这个范围滑块,以便用户可以按照提供的图像中看到的价格进行过滤。为此,我需要编写一个新查询,所以我在考虑 BETWEEN in SQL 但这不适用于字符串。在 SQL 中使用范围滑块过滤价格有什么想法吗?

BETWEEN 对字符串有效。它工作得很好——字符串按字母顺序排列。

您的问题是字符串上的 BETWEEN 不遵循数字顺序。嗯,这很正常。如果我说法语,我不会指望说英语的人能听懂我的话。与类型相同。如果我在字符串上使用 BETWEEN,那么我希望比较是基于 string,而不是数字。 (顺便说一句,日期也是如此。)

修复您的数据,以便将值存储为 numeric/decimal 值。这些数字具有固定的小数位数,正是货币价值所需要的。

在大多数数据库中,您需要去掉美元符号。这样的事情应该有效:

update t
    set price = replace(price, '$', '');

alter table t alter column price numeric(10, 2);  -- or whatever is appropriate

确切的语法可能因数据库而异。