SQL就像包含通配符的字段上的查询一样

时间:2013-10-08 22:46:16

标签: sql sql-server

在我的名为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' 

但我不喜欢这个想法。还有更好的吗?

1 个答案:

答案 0 :(得分: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