1

我对使用 ms SQL 服务器相当陌生,想知道是否有办法将整数列值转换为字符串以用于全文包含查询。

例子:

Select 
   *, 
   (select count(t2.id) from table2 t2 where contains(t2.text, t.someinteger)) as number 
from table1 t`

由于t.someinteger不是字符串,因此查询失败。

我尝试将整数转换为 avarchar但它在语法上不正确。有谁知道如何实现这一目标?

非常感谢任何帮助。

4

1 回答 1

1

全文包含不会像您期望的那样工作。全文查询有很多技巧。也许你应该看看 like 运算符:

select 1 where '1234' like '%' + cast(34 as nvarchar) + '%';

select 1 where '1234' like '%' + cast(35 as nvarchar) + '%';

全文搜索不适用于搜索子字符串,如本文所示:

如何让领先的通配符全文搜索在 SQL Server 中工作?

全文搜索如何工作?让它变得简单:它获取您的文本,将其拆分为标记/单词(将其视为标签),并为每个标签/单词编制索引。

所以,如果你寻找一个词/标签,它会非常快。如果您在单词中查找子字符串,它的行为就像“LIKE”查询一样。

根据我自己的经验:如果您从单词的末尾或中间的子字符串中查找,全文搜索将无济于事。如果你寻找词的开头,它会很快。

所以,如果你想找到单词“substring”的一些子串:

1)好的(快速)查询将是“sub*”、“subs*”等 => 将使用索引

2) 真正糟糕的查询将是:“*string”、“ str ”等 => 不会使用索引

于 2013-03-25T15:49:47.033 回答