java - 我需要为 mysql 表的每一行分配一个随机但唯一的 ID。如果行包含相同的值,则 ID 应该相同

标签 java mysql

我需要为 Mysql 表中的每一行分配一个随机但唯一的 ID。如果行包含相同的值,则 ID 应该相同。

即,如果第一行包含 [hi,hello,bye],第二行包含 [gg,hello,bye],第三行包含 [hi,hello,bye],则第一行和第三行应生成相同的 ID,第二行应生成相同的 ID行应该生成不同的 ID。

提前致谢。

最佳答案

MD5 哈希可以工作。下面是需要更新的快速/脏代码,但证明了这个概念。

System.out.println("row1=" + test1 + ":" + tst1.getHash(test1));
System.out.println("row2=" + test2 + ":" + tst1.getHash(test2));
System.out.println("row3=" + test3 + ":" + tst1.getHash(test3));

private String getHash(String inputStr){
    try{
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(inputStr.getBytes());
        byte byteData[] = md.digest();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < byteData.length; i++) {
         sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
        }
        return sb.toString();
    }
    catch(Exception e)
    {
        e.printStackTrace();
        return null;
    }
}

row1=hi,hello,bye:cfe40e96aa052a484208c2aefb6f39bb
row2=gg,hello,bye:f652785f0e214507e6aea44ecd3ffb7a
row3=hi,hello,bye:cfe40e96aa052a484208c2aefb6f39bb

关于java - 我需要为 mysql 表的每一行分配一个随机但唯一的 ID。如果行包含相同的值,则 ID 应该相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15216345/

相关文章:

Linux 的 Java Service Wrapper 找不到环境变量

php - 将一个表中的多个 URL 链接到另一个表中的单个记录?

mysql - 如何将来自循环的值放入 SQL 中的表中 C 语言

mysql - 是否有可能避免两个访问同一个表的子查询?

java - 泛型 - 如何返回 T 的 Map?

java - 查找arraylist中的重复元素并显示

java - 跳过 build.xml 的 Eclipse 验证

mysql - 为什么这个简单的 SQL 查询会在一个简单的 6k 记录表上造成严重滞后?

php - 标记约定

java - 自动扩展 JTree 直到满足高度阈值