首页 > 解决方案 > 基于某些场景的搜索

问题描述

SQL Server 中有一个表;比如 TableA 有 2 列(名称和描述),其中的数据如下:

Name          Description
Person1       Description1
Person2       Description2
Person12      Description12

我有一个 searchstring="Person+1" 所以,它会搜索名称或描述字段包含“Person”和“1”的表中的所有值,即搜索值用空格分隔

我正在尝试根据“+”拆分搜索字符串,然后尝试比较表中满足我所需条件的所有值

Declare @searchstring varchar(50)
set @searchstring='Person+1'

Select *
from TableA
where Name In Split(searchstring,'+') or
      Description In Split(searchstring,'+')

预期结果:

Name          Description
Person1       Description1
Person12      Description12

标签: sqlsql-serverstored-procedures

解决方案


拆分功能与@Aamir 的相同。请看上面。

查询部分:

SELECT t1.[name]
FROM #Table1 t1
CROSS APPLY #Table2 t2
GROUP BY t1.[name]
HAVING SUM(CASE WHEN (t1.[name] LIKE '%' + t2.[name] + '%') THEN 1 ELSE 0 END) = (SELECT COUNT(*) FROM #Table2)

推荐阅读