sql - 基于某些场景的搜索
问题描述
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
解决方案
拆分功能与@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)
推荐阅读
- javascript - 带有 javascript 的多级下拉菜单。第二个下拉菜单不响应 javascript 命令
- python - 如何在Python中打印多个列表成为一个列表
- c# - GET 方法返回空
- c - 在中断服务程序 (IRQ 1) 中检测 KeyUp
- arrays - char* 指针数组在 C 中不递增
- javascript - 如何使用来自全局对象的导入依赖项制作捆绑包?
- python-sphinx - 具有 2 个长期版本分支的 ReadTheDocs 站点
- kubernetes - 使用相同的列表清单部署两个不同的守护程序集
- python - 用 Python 编写 Discord 机器人 - 不知道如何设置反应角色
- javascript - 如何使用 Font-Face 来描述 JS 中的新字体或 React 提供内联属性?