2015-02-09 97 views
1

我的SQL Express 2012中有一个表,我为字数加了一列(整数),表中已经有几百行。我不知道如何更新列以从“条目”列中获得单词数。如何更新列

我创建了一个向我显示数据的查询,但是如何使用此更新表来存储每个条目的字数?

SELECT 
    ID, 
    [UserName], 
    [DateCreated], 
    LEN([Entry]) - LEN(REPLACE([Entry], ' ', '')) + 1 AS 'Word Count' 
FROM [dbo].[Notes] 
+1

如果你想这是准确的,你应该在这里使用计算列,而不是试图使用Update语句保持值是最新的。 – 2015-02-09 22:29:01

回答

0

在SQL语言的表更新数据的动词是毫不奇怪UPDATEThe documentation has the full syntax

如果要更新所有行和有在Entry列中没有NULL值(这将使计算失败),那么该查询将更新一个名为WordCount柱:

UPDATE Notes SET WordCount = LEN([Entry]) - LEN(REPLACE([Entry], ' ', '')) + 1 
+0

谢谢你的回答....我需要更多地了解SET。再次感谢。 – 2015-02-09 22:17:06

0

试试这段代码。

UPDATE Notes SET 
WordCount = LEN([Entry]) - LEN(REPLACE([Entry], ' ', '')) + 1 

然后,它应该更新表中的所有行,并为该行的单词计数。

感谢,

0

这里是你如何可以这样做,这样你的价值永远是最新的。这里有两大优势。首先,你不必更新你的表格。其次,即使有人用查询更新了你的表并且没有更新WordCount,这些值也总是最新的。

create table #test 
(
    Entry varchar(100) 
    , WordCount as LEN(Entry) - LEN(REPLACE(Entry, ' ', '')) 
) 

insert #test 
select 'two words' union all 
select 'three words now' 

select * from #test 

drop table #test