0

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

  1. 这是一个正确的说法吗?
  2. 如果是这样,如何在不启用全文搜索功能的情况下在 varchar(max) 列的全文中搜索子字符串(如果这甚至有意义)?

更新:在SQL Server 2008 (10.0.5538.0)上搜索超过 8K 对我不起作用。

4

2 回答 2

3

一种方法是在该表上创建一个视图,该视图使用 SUBSTRING 将该列划分为 8k 个块。除了这 0 个索引分区之外,从第 4k 个字符开始将列分区为 8k 个块。

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

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

于 2017-02-02T22:21:13.780 回答
-1

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

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

于 2017-02-02T23:01:06.943 回答