在 Sql Server 中,我使用 XML 类型列来存储消息。我不想存储重复的消息。
我只会为每个用户发送几条消息。我当前正在查询表中的这些消息,将 XML 转换为 C# 代码中的字符串。然后我将这些字符串与我要插入的字符串进行比较。
不幸的是,Sql Server 漂亮地打印了 XML 类型字段中的数据。您存储到数据库中的字符串不一定与您稍后返回的字符串完全相同。它在功能上是等效的,但可能删除了空格等。
有没有一种有效的方法可以将我正在考虑插入的 XML 字符串与数据库中已有的字符串进行比较?顺便说一句,如果我检测到重复消息,我需要删除旧消息,然后插入替换消息。
0 - 将哈希列添加到表中
1 - 当您收到新消息时,将整个 XML 转换为大写,删除所有空格和返回/换行,然后计算规范化字符串的哈希值。
2 - 检查是否已经有一行包含生成的哈希代码。
- 如果是,这是重复的,请处理它
因此
- 如果没有,则将原始 XML 与哈希值一起存储在新行中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)