其中,CastleType在SQL Server中设置为数据类型"text“,查询为:
SELECT *
FROM [Village]
WHERE [CastleType] = 'foo'
我得到了错误:
数据类型TEXT和VARCHAR在等于运算符中不兼容。
可以不使用WHERE子句查询此数据类型吗?
发布于 2010-12-04 05:36:12
您可以使用LIKE
而不是=
。没有任何通配符,这将具有相同的效果。
DECLARE @Village TABLE
(CastleType TEXT)
INSERT INTO @Village
VALUES
(
'foo'
)
SELECT *
FROM @Village
WHERE [CastleType] LIKE 'foo'
text
已弃用。更改为varchar(max)
将更容易使用。
另外,数据可能有多大?如果您要进行相等比较,那么理想情况下您会希望对此列进行索引。如果您将列声明为大于900字节的任何值,那么这是不可能的,但是您可以添加一个计算出的checksum
或hash
列,用于加速这种类型的查询。
发布于 2013-01-24 13:19:59
请试试这个
SELECT *
FROM [Village]
WHERE CONVERT(VARCHAR, CastleType) = 'foo'
发布于 2010-12-04 05:35:57
您不能使用=
运算符与text
进行比较,而必须使用here中列出的比较函数之一。还要注意页面顶部的大警告框,这很重要。
https://stackoverflow.com/questions/4350060
复制相似问题