在varchar(max)列

时间:2017-02-02 22:15:27

标签: sql-server tsql varchar text-search varcharmax

由于谷歌搜索,结果是LIKE运算符和CHARINDEX()函数只搜索varchar(max)列的前8K。

  1. 这是正确的陈述吗?
  2. 如果是这样,如何在不启用全文搜索功能的情况下搜索varchar(max)列全文中的子字符串(如果这有意义的话)?
  3. 更新:在 SQL Server 2008(10.0.5538.0)上,搜索超过8K对我无效。

2 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是在此表上创建一个视图,使用SUBSTRING将列分区为8k块。除了这些0索引分区之外,还以4k块为单位对列进行分区。

然后,您可以对这些列中的每一列应用LIKE子句,如果任何列匹配该行,则匹配。

此方法存在明显的局限性(搜索词必须低于8k,搜索参数必须以通配符开头和结尾),但启用全文搜索才是真正的答案

答案 1 :(得分:0)

我从未听说过这个限制!我只是测试它确定并且我在varchar(max)col中插入10K和​​20K数据并搜索最后一个没有出现在前8K中的部分,并且SQL Server找到了该行。

所以第一个问题的答案是:否