3 回答
TA贡献2021条经验 获得超8个赞
该VARCHAR(MAX)
类型是的替代TEXT
。基本区别在于,TEXT
类型将始终将数据存储在Blob中,而该VARCHAR(MAX)
类型将尝试将数据直接存储在行中,除非它超过8k限制,然后将其存储在Blob中。
在两种数据类型之间使用LIKE语句是相同的。附加的功能VARCHAR(MAX)
给你的是,它也可以被用来=
与GROUP BY
其他任何VARCHAR
列都可以。但是,如果您确实有很多数据,那么使用这些方法会遇到巨大的性能问题。
关于是否应该使用LIKE
搜索,或者是否应该使用全文索引和CONTAINS
。不论VARCHAR(MAX)
还是,这个问题都是一样的TEXT
。
如果要搜索大量文本,而性能是关键,则应使用全文索引。
LIKE
它易于实现,并且通常适用于少量数据,但是由于无法使用索引,因此在处理大数据时性能极差。
TA贡献1777条经验 获得超10个赞
如果不将文本字段从文本转换为varchar,则无法搜索文本字段。
declare @table table (a text)
insert into @table values ('a')
insert into @table values ('a')
insert into @table values ('b')
insert into @table values ('c')
insert into @table values ('d')
select *
from @table
where a ='a'
这给出一个错误:
The data types text and varchar are incompatible in the equal to operator.
Wheras这不:
declare @table table (a varchar(max))
有趣的是,LIKE仍然有效,即
where a like '%a%'
添加回答
举报