我有一个格式如下的表格
id cityname user
1 newyork a
2 newyork b
3 newyork c
4 denver d
5 colorodo e
6 colorodo e
我需要添加一个名称版本的新列,该列使用rand()随机生成,并且它应具有相似cityname的相同值
id cityname user version
1 newyork a 1111111.11
2 newyork b 1111111.11
3 newyork c 1111111.11
4 denver d 7845156.12
5 colorodo e 8765589.12
6 colorodo e 8765589.12
如何实现类似的随机值。
请帮忙。
答案 0 :(得分:1)
如果您使用的是SQL Server 2008或更高版本,则可以使用CHECKSUM
功能。请记住,您可能会遇到4字节哈希冲突。
SELECT *, CHECKSUM(CityName) as Version
FROM Cities
对于不太可能发生碰撞的事情,您可以使用HASHBYTES
:
SELECT *, HASHBYTES('SHA1', CityName) as Version
FROM Cities
对于MySQL,您可以使用任何encryption functions,并获取子字符串:
SELECT *, LEFT(SHA1(CityName), 8) as Version
FROM Cities
或者,只需使用整个哈希来进行更重的碰撞保护。大多数其他RDBMS都有类似的哈希函数。
答案 1 :(得分:0)
正如@Mitch所提到的,你可以将它作为CHECKSUM
您可以将其设为计算列,以便在INSERT
或UPDATE
上自动计算
ALTER TABLE tableA ADD version AS CHECKSUM(CityName) PERSISTED