2015-02-09 96 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