The data types text and varchar are incompatible in the equal to operator
最近在使用SQL Server的時候,建立了一個數據表Pages,其定義及一行數據如下:
pageId: int | pagePath: text | pageTitle: text |
---|---|---|
0 | /index.aspx | HomePage |
對該表進行查詢:
SELECT pageTitle
FROM Pages
WHERE pagePath = '/index.aspx';
執行查詢就得到了一條錯誤:
消息 402,級別 16,狀態 1,第 1 行
The data types text and varchar are incompatible in the equal to operator.
這裏的text對應着查詢語句中的pagePath(因爲表中的將pagePath定義爲text類型),varchar對應着”/index.aspx”。
仔細地閱讀一下錯誤提示,還是很好理解的,就是兩個不同的數據類型(data和varchar)不能用等號“=”進行比較。
那麼解決辦法就可以想到了:
ALTER TABLE Pages;
ALTER COLUMN pagePath VARCHAR(MAX);
把pagePath轉換成varchar類型:
SELECT pageTitle
FROM Pages
WHERE CONVERT(VARCHAR(MAX), pagePath) = '/index.aspx';
SELECT pageTitle
FROM Pages
WHERE pagePath LIKE '/index.aspx';
最後要說明一點,事實上text類型(或ntext)是不推薦使用的類型。在可能的情況下,最好使用varchar()或nvarchar()代替。