2014-07-07 27 views
0

我有一個包含12個單詞的表格,我想將其更改爲數字。例如:每個12列的可以具有5預先指定的可能值中的一個:用SQL Server中的數字替換單詞

  • highly agree
  • agree
  • no opinion
  • disagree
  • highly disagree

我想用一個數字來改變這些詞,問題就在於da ta類型,它不允許我將nvarchar數據類型更改爲數字,我甚至嘗試使用text數據類型來包含{非常同意,同意,不同意,不同意,非常不同意},然後將它們更改爲數字,但出現此錯誤:

消息402,級別16,狀態1,行1
的數據類型text和varchar是在等於操作不相容。

我使用的查詢是這樣的:

[A1]= (case when [A1]='highly agree' then 1 
      when [A1]='agree' then 4 
      when [a1]='نظری ندارم' then 9 
      when [a1]='موافقم' then 16 
      when [a1]='کاملا موافقم' then 25 
      else [A1] end) 
+0

嘗試我們' ''''一樣......然後 '1' ...' – WiiMaxx

+0

什麼數據類型爲'A1 '? – GarethD

回答

1

你不需要你的列轉換爲文本數據類型,但你必須在你的case語句來使用你的號碼爲varchar。你不能在case語句混淆的數據類型

[A1]= (case when [A1]='highly agree' then '1' when [A1]='agree' then '4' when  [a1]='نظری ندارم' then '9' when [a1]='موافقم' then '16' when [a1]='کاملا موافقم' then '25' else [A1] end) 

而且你的問題,如果你想保持計算這個領域,那麼你必須整列轉換爲數字。舉個例子,你可以使用此查詢

[CalculatedColumn]= CAST(case when [A1]='highly agree' then '1' 
          when [A1]='agree' then '4' 
          when [a1]='نظری ندارم' then '9' 
          when [a1]='موافقم' then '16' 
          when [a1]='کاملا موافقم' then '25' 
          else '999' end) AS INT) -- Any other number which can cast to integer 
+0

那麼是否可以將它們相加或計算它們的平均值? –

+0

你可以檢查更新的答案嗎? –

1

試試這個:

SELECT (CASE A1 WHEN 'highly agree' THEN '1' 
       WHEN 'agree' THEN '4' 
       WHEN 'نظری ندارم' THEN '9' 
       WHEN 'موافقم' THEN '16' 
       WHEN 'کاملا موافقم' THEN '25' 
       ELSE A1 
     END) AS A1