3 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
該VARCHAR(MAX)
類(lèi)型是的替代TEXT
?;緟^(qū)別在于,TEXT
類(lèi)型將始終將數(shù)據(jù)存儲(chǔ)在Blob中,而該VARCHAR(MAX)
類(lèi)型將嘗試將數(shù)據(jù)直接存儲(chǔ)在行中,除非它超過(guò)8k限制,然后將其存儲(chǔ)在Blob中。
在兩種數(shù)據(jù)類(lèi)型之間使用LIKE語(yǔ)句是相同的。附加的功能VARCHAR(MAX)
給你的是,它也可以被用來(lái)=
與GROUP BY
其他任何VARCHAR
列都可以。但是,如果您確實(shí)有很多數(shù)據(jù),那么使用這些方法會(huì)遇到巨大的性能問(wèn)題。
關(guān)于是否應(yīng)該使用LIKE
搜索,或者是否應(yīng)該使用全文索引和CONTAINS
。不論VARCHAR(MAX)
還是,這個(gè)問(wèn)題都是一樣的TEXT
。
如果要搜索大量文本,而性能是關(guān)鍵,則應(yīng)使用全文索引。
LIKE
它易于實(shí)現(xiàn),并且通常適用于少量數(shù)據(jù),但是由于無(wú)法使用索引,因此在處理大數(shù)據(jù)時(shí)性能極差。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果不將文本字段從文本轉(zhuǎn)換為varchar,則無(wú)法搜索文本字段。
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'
這給出一個(gè)錯(cuò)誤:
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%'
添加回答
舉報(bào)