使用全文搜索查找包含 space 的字符串

find strings containing space using full text search

假设我们有一列具有此值:

bla dibla

我可以使用哪个(CONTAINS?)搜索表达式来使用此搜索字符串查找上述条目:

bladibla

恐怕无法使用全文搜索来搜索此类字符串,因为 MSSQL 会分析行并从字符串中获取 "words"(标记)。因此,如果您有值 bla dibla,MSSQL 会将其拆分为两个词 bladibla。 要解决您的问题,您可以这样做:

  1. 使用公式 (replace([Value],' ',''))
  2. 添加持久计算列
  3. 在此列上添加全文索引
  4. 并对计算列使用搜索

CREATE TABLE [dbo].[TestTable](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Value] [nvarchar](max) NOT NULL,
    [ValueTrimed]  AS (replace([Value],' ','')) PERSISTED,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED 
([Id] ASC)

INSERT INTO TestTable
(Value)
Values
('bla dibla')

SELECT *
FROM [dbo].[TestTable] as tt
where CONTAINS (tt.ValueTrimed, 'bladibla')

SELECT *
FROM [dbo].[TestTable] as tt
INNER JOIN FREETEXTTABLE([dbo].[TestTable], ValueTrimed, 'bladibla') AS KEY_TBL ON tt.Id = KEY_TBL.[KEY];