如何解決此問題?SQL Server:當列爲NTEXT時,IN('asd')不起作用
where someNtext IN ('asd',asd1')
給出了一個錯誤:
The data types ntext and nvarchar are incompatible in the equal to operator.
如何解決此問題?SQL Server:當列爲NTEXT時,IN('asd')不起作用
where someNtext IN ('asd',asd1')
給出了一個錯誤:
The data types ntext and nvarchar are incompatible in the equal to operator.
一個IN名單只是短手或條件。 LIKE子句適用於NTEXT和TEXT字段。所以,你可以結合這兩種觀念要做到這一點:
WHERE (
someNtext LIKE 'asd'
OR someNtext LIKE 'asd1'
)
然而,隨着有關問題的評論@marc_s建議,NVARCHAR(MAX)是優選的,因爲所有的字符串函數與它(和文本工作, NTEXT和IMAGE數據類型已被棄用)。您可以做內嵌轉換,如:
WHERE CONVERT(NVARCHAR(MAX), someNtext) IN ('asd', 'asd1')
,但可能不會執行,以及使用LIKE子句與OR條件。
我認爲最好避免使用這種類型,你不覺得嗎? – 2011-05-14 14:59:28
如果您在創建列時有選擇,那麼肯定是避免使用TEXT,NTEXT和IMAGE,因爲它們已被棄用,並且可能會從未來版本的SQL Server中刪除。但是,如果使用在SQL Server 2000中完成的系統,然後升級到更新的版本,並且無法更改列數據類型,那麼使用LIKE子句就可以。理想情況下,您將有機會使用NVARCHAR(MAX)數據類型重建表,但有時人們會從第三方開發人員的包中工作,無法進行更改。 – 2011-05-14 15:03:28
NTEXT是沒有可比性的,你擰,如果你需要比較使用爲nvarchar(MAX)
請刪除這個答案,因爲它是特別錯誤的。使用LIKE子句可以比較NTEXT字段。 – 2011-05-14 15:04:23
從http://msdn.microsoft.com/en-us/library/ms187993.aspx不使用它:
ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.
是缺少龍頭'「'爲'」 asd1 ''參數只是一個錯字? – 2011-05-14 14:44:36
'NTEXT'被稱爲是一個非常難以處理的數據類型 - 我建議切換到'NVARCHAR(MAX)'這是更容易使用和工作! – 2011-05-14 14:47:49