我正在尝试构建一个旅行应用程序,可以检查目的地 A 到 B 之间的价格,我有一个表以 from
的形式存储数据和 to
就像是
CREATE TABLE PRICES {
from varchar,
to varchar
price
问题是,如果
from
= A
和 to
= B
如果我尝试搜索价格表 B
-> A
我没有结果。即SELECT * from prices where from = 'B' AND to = 'A'
当然我可以通过像 SELECT * from prices where from = 'A' And To = 'B' OR from = 'B' and 'To' = 'A'
这样的查询来解决这个问题。有没有一种方法可以创建一个哈希,这样我就不需要这样做了
OR
查询,而是我将执行类似 SELECT * from prices where hash = 'C'
的操作在这种情况下,C
将是这样的值 hash(a, b) = c = hash(b,a)
然后我可以存储有 c
在表格中,我不需要执行 OR
询问。如果有帮助,我正在使用 Go btw,但您可以使用任何语言/伪代码提出哈希函数。
谢谢
最佳答案
对字符串进行排序,用分隔符连接并返回结果。
func abOrBa(a, b string) string {
if a > b {
a, b = b, a
}
return fmt.Sprintf("%s\t%s", a, b)
}
Run it on the playground .
费用可能不是symmetric如问题评论中所述。如果是这样,这种方法可能没有任何值(value)。
关于mongodb - 总是产生相同哈希的无序 2 字符串哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61033153/