2013-02-20 16 views
19

電子郵件屬於表預訂及其定義爲我們微軟SQL服務器類型「文本」文本,ntext和圖像數據>類型不能比較或排序,使用時除了IS NULL或LIKE>運營商

SELECT email, 
COUNT(email) AS NumOccurrences 
FROM Booking 
GROUP BY email 
HAVING (COUNT(email) > 1) 

運行上面的查詢之後(試圖找到在預訂重複電子郵件) 我得到了這樣的錯誤消息:

文本,ntext和圖像數據 類型不能比較或排序,除非當使用IS NULL或LIKE 運算符時。

我使用Microsoft SQL

+2

你爲什麼用'的電子郵件text'? _「將在未來版本的Microsoft SQL Server中刪除ntext,文本和圖像數據類型。避免使用這些數據類型」_ http://msdn.microsoft.com/zh-cn/library/ms187993.aspx **您無法通過「文本」進行分組**:「不能在group_by_expression中使用text,ntext和image類型的列」_ http://msdn.microsoft.com/en-us/library/ms177673.aspx – 2013-02-20 12:04:58

+0

哪個版本SQL Server的使用? – 2013-02-20 12:05:05

+0

@TimSchmelter謝謝,但它的老和在生產,不太可能我們戈納改變它 – 2013-02-20 12:12:30

回答

41

,因爲你正在使用SQL Server,爲什麼數據類型不會更改爲VARCHAR(100)

要解決此誤差,而不改變數據類型,則TEXT or NTEXT列需要在任一ORDER BY子句或SELECT語句的子句GROUP BY使用時被轉換爲VARCHAR or NVARCHAR。例如,這是小有一點有點亂

SELECT CAST(email AS NVARCHAR(100)) email, 
     COUNT(CAST(email AS NVARCHAR(100))) AS NumOccurrences 
FROM Booking 
GROUP BY CAST(email AS NVARCHAR(100)) 
HAVING COUNT(CAST(email AS NVARCHAR(100))) > 1 
相關問題