0

我想对存储在 SQL Server 2016 中的 XML 文件运行全文搜索,以varbinary在这些文件中查找短语(id、姓名、电话等)。问题是查询没有找到 UTF-16 编码的文件。

我有以下表格

文件

ID 文件名
1 utf8-encoded.xml
2 utf16-encoded.xml

表文件内容:

ID 内容 类型
1 0x444ae9b... XML
2 0x422de56... XML

和一个观点:

CREATE VIEW Search 
WITH SCHEMABINDING 
AS 
    SELECT 
        e.Id, e.Filename, c.[Content], c.[Type]
    FROM 
        Files AS f 
    INNER JOIN 
        FileContent AS c ON c.Id = f.Id

然后我在 .NET Framework 4.6.1 中使用 Dapper 在 C# 中执行全文搜索查询:

var searchTerm = "xxxxx"; // from user
var query = "SELECT * FROM Search s WHERE CONTAINS(s.Content, @searchTerm)";
var data = connection.Query<File>(query, new {searchTerm});
...

像这样将 Dapper 参数更改为 sql-injectable 字符串连接:WHERE CONTAINS(s.Content, " + searchTerm" + ")"不会改变任何东西。

该查询查找 UTF-8 编码的 XML 文件,但找不到 UTF-16 编码的文件。我相信这不是与 Dapper 相关的问题。

我该如何解决这个问题才能找到 UTF-16 编码的 XML 文件呢?SQL Server 的全文搜索是否也适用于 UTF-16 编码的 XML 文件?

4

0 回答 0