你可以使用校验和散列值到INT在计算列:
CREATE TABLE T1 (C1 VARCHAR(10), C2 VARCHAR(10), C3 INT, C4 DATETIME,
C5 AS CHECKSUM(C1, C2, C3, C4))
INSERT INTO T1 VALUES ('Value 1', 'Col2 Val 1', 100, getdate() - 100)
INSERT INTO T1 VALUES ('Value 2', 'Col2 Val 2', 200, getdate() - 80)
INSERT INTO T1 VALUES ('Value 3', 'Col2 Val 3', 300, getdate() - 60)
INSERT INTO T1 VALUES ('Value 4', 'Col2 Val 4', 400, getdate() - 40)
INSERT INTO T1 VALUES ('Value 5', 'Col2 Val 5', 500, getdate() - 20)
C5收益率:
C5
-1870891995
-1870901775
-1870904739
-1870874967
-1870880267
如果你需要它是一个可读的哈希值,你可以写散列作为一个计算列 - 这样,你只需要写一次:
CREATE TABLE T1 (C1 VARCHAR(10), C2 VARCHAR(10), C3 INT, C4 DATETIME,
C5 AS C1 + '|' + C2 + '|' + CAST(C3 AS VARCHAR(10)) + '|' + FORMAT(C4, 'M/d/yyyy'))
INSERT INTO T1 VALUES ('Value 1', 'Col2 Val 1', 100, getdate() - 100)
INSERT INTO T1 VALUES ('Value 2', 'Col2 Val 2', 200, getdate() - 80)
INSERT INTO T1 VALUES ('Value 3', 'Col2 Val 3', 300, getdate() - 60)
INSERT INTO T1 VALUES ('Value 4', 'Col2 Val 4', 400, getdate() - 40)
INSERT INTO T1 VALUES ('Value 5', 'Col2 Val 5', 500, getdate() - 20)
SELECT * FROM T1
C5
Value 1|Col2 Val 1|100|5/2/2017
Value 2|Col2 Val 2|200|5/22/2017
Value 3|Col2 Val 3|300|6/11/2017
Value 4|Col2 Val 4|400|7/1/2017
Value 5|Col2 Val 5|500|7/21/2017
我现在真的这样做,想知道如果有我更好的方法来做同样的事情。 – Krylor
嗯...... CHECKSUM呢? –
我认为如果输出对于一个独特的组合是唯一的,那么它应该可以工作。 – Krylor