如何使用两个表中的十进制列的值更新整数列?

时间:2017-03-04 08:34:44

标签: sql-server

我有两张桌子:

CREATE TABLE [dbo].[Phrase] (
    [PhraseId]     UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    [English]      NVARCHAR (250)   NOT NULL,
    [Kana]         NVARCHAR (MAX)   NULL,
    [Kanji]        NVARCHAR (MAX)   NULL,
    [FrequencyA]   INT              NULL,
    PRIMARY KEY CLUSTERED ([PhraseId] ASC),
    CONSTRAINT [FK_PhrasePhraseChapter] FOREIGN KEY ([ChapterId]) REFERENCES [dbo].[PhraseChapter] ([PhraseChapterShortId])
);

CREATE TABLE [dbo].[FreqLeeds] (
    [Id]   INT             NOT NULL,
    [Freq] DECIMAL (18, 5) NOT NULL,
    [Text] NVARCHAR (50)   NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

如果Kanji列中的值与该FrequencyA表中的值匹配,如何更新Phrase表的Freq列的FreqLeeds列的整数值FreqLeeds中的Text列?请注意,我不会对小数点后的数字感到困扰 指向FreqLeeds表。

1 个答案:

答案 0 :(得分:0)

此查询可帮助您更新词组表。

UPDATE p
SET FrequencyA = CAST(fl.Freq as INT)
FROM dbo.Phrase p
JOIN dbo.FreqLeeds fl
ON fl.[Text] = p.Kanji

我想强调一点,如果Freq中的Decimal值大于Integer数据类型的范围,则会遇到错误。

当它们彼此相关时,避免在不同的表中使用不同的数据类型。