1

在我的名为 AAA 的 SQL Server 表中,我有一个名为 BBB 的字段,其中包含充满通配符的字符串:

&abc##v

_&abc##&&

_&abc##_12

_&abc##%

我需要允许用户在此字段上搜索部分匹配项。
用户的搜索词组将包含大量通配符。
解决这个问题的最佳方法是什么?

我想我可以写这样的东西:

select * from AAA where BBB like '%' + 
(add escape character to every wild card found in user's question) + '%' 
escape 'whatever char is not being used in user's question' 

但我不喜欢这个主意。有没有更好的?

4

1 回答 1

0

或者您可以使用全文搜索,与 LIKE 运算符相比,它可以为您提供更好的性能,我会为表创建全文索引并使用全文搜索

DECLARE @userValue nvarchar(100) = 'some Value'
Declare @sql NVARCHAR(MAX);
SET @sql = '''''select * from myTable
WHERE CONTAINS (myColumn, "' + @userValue + '")'''''

EXECUTE sp_Executesql @sql
于 2013-10-08T23:11:21.993 回答