SQL 服务器:在单引号内搜索
SQL Server : search inside single quote
我在 SQL 服务器中有 Table1
是这样的:
ID | Name
---+--------------
1 | Robert Bart
2 | Andy Wor
3 | Sam O'Neil
4 | Bill Neil
全文已启用,我的 T-SQL 看起来像这样:
SELECT *
FROM Table1
WHERE CONTAINS([Name], @Keywords)
参数@Keywords
的类型为NVARCHAR(MAX)
。
我的问题是,当 @Keyword
是 Neil 时,我只得到记录 #4 作为结果;有没有办法从 select 将 Neil
作为 @Keywords
传递给记录 #3 和 #4?
我正在使用 MS SQL Server 2017。
您将很难自定义 Microsoft 的 FTS。
分词器随 SQL 服务器的每个版本而变化,并取决于您用于创建全文索引的语言。
您也许可以找到将 O'Neil 拆分为 O + Neil 的默认语言,但我不会指望它。
有关设置语言环境标识符的更多信息:CREATE FULLTEXT INDEX with a LCID
如果您真的想自定义分词系统,您有 2 个选择:
最简单的解决方法是在将名称插入到 Table1 之前用引号等分隔符拆分名称,例如 REPLACE(Name, '''', ' ')
如果您需要原始全名,只需将其存储在不同的 column/table.
中
如果有人需要,我已经找到了解决方法;我在 table Table1.Name 列上设置了我的全文索引,分词器的语言设置为法语而不是英语。
这将在没有 O'
的名称中搜索
我在 SQL 服务器中有 Table1
是这样的:
ID | Name
---+--------------
1 | Robert Bart
2 | Andy Wor
3 | Sam O'Neil
4 | Bill Neil
全文已启用,我的 T-SQL 看起来像这样:
SELECT *
FROM Table1
WHERE CONTAINS([Name], @Keywords)
参数@Keywords
的类型为NVARCHAR(MAX)
。
我的问题是,当 @Keyword
是 Neil 时,我只得到记录 #4 作为结果;有没有办法从 select 将 Neil
作为 @Keywords
传递给记录 #3 和 #4?
我正在使用 MS SQL Server 2017。
您将很难自定义 Microsoft 的 FTS。
分词器随 SQL 服务器的每个版本而变化,并取决于您用于创建全文索引的语言。
您也许可以找到将 O'Neil 拆分为 O + Neil 的默认语言,但我不会指望它。
有关设置语言环境标识符的更多信息:CREATE FULLTEXT INDEX with a LCID
如果您真的想自定义分词系统,您有 2 个选择:
最简单的解决方法是在将名称插入到 Table1 之前用引号等分隔符拆分名称,例如 REPLACE(Name, '''', ' ')
如果您需要原始全名,只需将其存储在不同的 column/table.
如果有人需要,我已经找到了解决方法;我在 table Table1.Name 列上设置了我的全文索引,分词器的语言设置为法语而不是英语。 这将在没有 O'
的名称中搜索