我需要创建一个类似于这篇文章的视图:
但我需要为相同的项目组合创建相同的ID,例如,如果我有2列值34,67,这个组合将给我总是相同的id,顺便说一下,id必须是唯一的,如果我有另一个组合,如3,467,应该是另一个id。
视图将有3列
Id, Value1, Value2
Id
将根据Value1
和Value2
:
Id Value1 Value2
---------------------
?? 34 67
?? 3 467
Value1
和Value2
的相同组合将始终返回相同的Id
,我需要找到根据这些列生成这些ID的方法
答案 0 :(得分:0)
使用过程获取特定值对的ID。如果存在,你得到。如果没有,则生成并存储它。
用于存储具有唯一ID
的所有值对的表CurrentDb.Execute "UPDATE loggingX " & _
" SET stdid=" & Me.txtID & _
", stdname='" & Me.txtName & "'" & _
", gender='" & Me.cboGender & "'" & _
", phone='" & Me.txtPhone & "'" & _
", address='" & Me.txtAddress & "'" & _
", WHid='" & Me.txtWHid & "'" & _
" WHERE stdid=" & Me.txtID.Tag
" AND WHid=" & Me.txtWHid
获取任何价值对的ID的程序
create table idval1val2 (id int identity, value1 int not null, value2 int not null)
go
如果值可以按任何顺序排列,则需要进行小的更改。
答案 1 :(得分:0)
使用哈希函数
select HashBytes ( 'MD5', cast(@value1 as char(20)) )
+ HashBytes ( 'MD5', cast(@value2 as char(20)) )
这将为您带来每个散列值的连接值(作为var binary)。在没有存储空间的任何系统中,这将是唯一且始终相同的。
示例:
select HashBytes ( 'MD5', '134' ) , HashBytes ( 'MD5', '2' )
, HashBytes ( 'MD5', '134' ) + HashBytes ( 'MD5', '2' )
0x02522A2B2726FB0A03BB19F2D8D9524D 0xC81E728D9D4C2F636F067F89CC14862C 0x02522A2B2726FB0A03BB19F2D8D9524DC81E728D9D4C2F636F067F89CC14862C
答案 2 :(得分:0)
或者您可以创建自己的哈希函数。这样的事情会做:
select @id= cast(@value1 as varchar(20)) +'.'+cast(@value2 as varchar(20))
这始终是唯一的,并带来相同的ID,在本例中为varchar(41)。
你可以做一个DECIMAL(4,4),不确定你的域名是什么
select @id= @value1 + @value2/10000.0
等