Sql 是否有编码两个文本的算法,即使改变它们的位置,结果也是一样的?

Sql 是否有编码两个文本的算法,即使改变它们的位置,结果也是一样的?,sql,algorithm,Sql,Algorithm,也许这个问题很难理解,我是说这个 给出两个示例文本 Text1=“abc”和Text2=“def” 你喜欢哪种算法 编码(Text1,Text2)=编码(Text2,Text1) 我希望函数的结果是唯一的(而不是编码重复(Text3,Text1),就像另一个校验和算法一样 事实上,这个问题的根源是我想在我的数据库中搜索一个问题,通过只搜索一列,是否有“谁是B的朋友”或“B是谁的朋友”的行 SELECT * FROM relationship WHERE hash = "a039813" 不是

也许这个问题很难理解,我是说这个

给出两个示例文本

Text1=“abc”和Text2=“def”

你喜欢哪种算法

编码(Text1,Text2)=编码(Text2,Text1)

我希望函数的结果是唯一的(而不是编码重复(Text3,Text1),就像另一个校验和算法一样

事实上,这个问题的根源是我想在我的数据库中搜索一个问题,通过只搜索一列,是否有“谁是B的朋友”或“B是谁的朋友”的行

SELECT * FROM relationship WHERE hash = "a039813"
不是


您可以调整任何编码以确保
编码(Text1,Text2)=编码(Text2,Text1)
,只需强制执行参数的特定顺序即可。由于您处理的是文本,可能需要使用基本的词法顺序:

encoding_adapter(t1, t2)
{
    if (t1 < t2)
        return encoding(t1, t2)
    else
        return encoding(t2, t1)
}
但这可能会导致冲突:编码(“AA”、“B”)==编码(“A”、“AB”)。有两种简单的解决方案:

  • 如果输入字符串中从未出现过一个或多个字符,请将其用作分隔符:
返回散列(t1+分隔符+t2)

  • 散列:

返回散列(散列(t1)+散列(t2))

谢谢。唯一性如何,如果我的编码是串联字符串,它将不是唯一的,就像“AA”+“B”=“A”+“BB”你是什么意思?
编码猫适配器(“AA”,“B”)=strcat(“AA”,“B”)=“AAB”
编码猫适配器(“B”,“AA”)=strcat”(“AA”,“B”)=“AAB”
。我不知道“AA”如何变成“A”和“B”如何变成“BB”。哦,我的错,我的意思是用户名“AA”和“B”与用户名“A”和“AB”相同(strcat(“AA”,“B”)==strcat(“A”,“AB”))谢谢你的简单回答!
encoding_adapter(t1, t2)
{
    if (t1 < t2)
        return encoding(t1, t2)
    else
        return encoding(t2, t1)
}
encoding(t1, t2)
{
    return hash(t1 + t2)
}