2011-12-26 82 views
0
select count(category) from list where category like 'action' 

上面是我想運行的查詢。但是,當我運行該查詢時,出現數據類型錯誤 。
有沒有其他方法count()?或...如何在數據類型爲文本時使用count()方法
(sql)數據類型爲文本時,如何使用count()方法?

+2

你正在收到什麼確切的錯誤信息? – TetonSig 2011-12-26 09:38:28

+4

'category'是什麼類型?我敢打賭,這不是一個字符串。 – Oded 2011-12-26 09:39:32

+0

如果category是一個varchar/nvarchar字段,這個查詢應該可以工作嗎?你確定它是正確的數據類型嗎? – TheBoyan 2011-12-26 09:40:54

回答

2

你不能在文本,ntext,圖像數據類型上應用COUNT()函數。

爲什麼你不能使用:

select count(*) from list where category like 'action' 

?你有一些空值?

如果你沒有排除空值上面的查詢已經可以很好地工作......

+0

我收到數據類型錯誤...你能指望一個文本字段?怎麼樣 ? – aleroot 2011-12-26 09:44:56

+1

@marc_s - 你說得對。今天大腦不能用這個問題... – Oded 2011-12-26 09:51:30

+0

謝謝。這很有效。 – 2011-12-26 10:06:02

-1

count()總是返回int喜歡的類型。

int讀取結果數據存取:例如: getInt(1)

2

要回答在標題爲未來的Google的問題,您可以使用

SELECT COUNT(CASE 
       WHEN some_text_column IS NOT NULL THEN 1 
      END) 
FROM some_table 

在你的情況,但(如通過@hvd在評論中指出)的WHERE category LIKE 'action'謂詞確保任何NULL值將被排除在外無論如何,所以它是安全的替換它COUNT(*)

此外,你幾乎肯定不應該使用text數據類型爲此。這是一個不贊成使用的數據類型,用於保存超過8000字節的LOB(大對象)數據。

像「行動」的字符串絕對不符合這個描述!

+0

這是一個不好的例子:如果'category LIKE'action'',那麼'category IS NOT NULL',所以它的意圖行爲不是'COUNT(*)'的行爲,而是'COUNT )'(如果它是有效的)和'COUNT(*)'具有相同的效果。 – hvd 2011-12-26 12:30:02

+0

@ hvd - 好點!同意。 – 2011-12-26 12:30:53

相關問題