我的表中是否有一列是另一列的哈希值并自动计算?

时间:2017-04-20 03:12:17

标签: sql-server

我有一个带有下表的SQL Server数据库:

CREATE TABLE [dbo].[Kanji] (
    [KanjiId]              UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    [Text]                 NVARCHAR (5)     NOT NULL,
    [Freq]                 INT              NULL,
    [Grade]                INT              NULL,
}

此表中有大量行,我希望能够只选择10%。理想情况下,我希望在表中有一个列(可能是计算列),类似于[Text]列内容的哈希值。哈希是0-9之间的数字,因此我可以选择具有此值的所有行。

有没有办法可以像这样创建一个列?

1 个答案:

答案 0 :(得分:1)

试试这个:

CREATE TABLE [dbo].[Kanji] (
    [KanjiId]              UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    [Text]                 NVARCHAR (5)     NOT NULL,
    [Freq]                 INT              NULL,
    [Grade]                INT              NULL,
    [Hash]  AS (CONVERT([bigint],hashbytes('md5',[Name]))%(5)+(5)),
}

例如,您将从-9到9获取值。