Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将多个关键字搜索到多行并合并成一行_Sql Server - Fatal编程技术网

Sql server 将多个关键字搜索到多行并合并成一行

Sql server 将多个关键字搜索到多行并合并成一行,sql-server,Sql Server,我有一个数据库,结构是这样的。 Id是表的主键,文本类型是Post Id(forn键)。一个长长的描述被分成4行,并用forn键(类型)绑定,因此,上述章节中的4行基本上与一个帖子有关,完整的描述是“Villammare Ferienwohnungen für 6 Personen geschmackvoller Apartmentkomplex im Cilento游泳池,Garten,Bar,zum Meer约150米”当我们合并4行时。前端的描述也如我通过组合4行所示(描述按类型组合)

我有一个数据库,结构是这样的。

Id是表的主键,文本类型是Post Id(forn键)。一个长长的描述被分成4行,并用forn键(类型)绑定,因此,上述章节中的4行基本上与一个帖子有关,完整的描述是“Villammare Ferienwohnungen für 6 Personen geschmackvoller Apartmentkomplex im Cilento游泳池,Garten,Bar,zum Meer约150米”当我们合并4行时。前端的描述也如我通过组合4行所示(描述按类型组合)

所以现在我想用多个关键字和描述实现搜索功能,所有关键字都将返回其“类型”。例如,如果我搜索“Personen 150”,那么如果一篇文章的描述同时包含两个关键字,那么它应该返回“Type”。如果我们使用
从tblName中选择type,其中描述(如“%Personen%”)和描述(如“%150%”)将返回null,因为其中任何一行没有两个关键字,但我想通过与“Text”组合搜索所有行一次,因此如果两个关键字在完整描述中匹配,它将返回“Text”(按文本组合4行),因此在本例中应返回1,因为完整描述包含两个关键字


请帮我摆脱这一困境。

您可以像这样使用聚合:

select type
from your_table
group by type
having count(case when description like '%Personen%' then 1 end) > 0
   and count(case when description like '%150%' then 1 end) > 0;
工作原理:
使用条件聚合,我们正在检查给定类型的任何描述中是否存在给定的搜索字符串。
大小写
将返回1,如果字符串包含给定的搜索字符串,否则它将返回null。由于我们正在聚合,我们使用
计数
检查一个或多个描述是否包含搜索字符串。

好的,让我试试BrotherMight必须删除每个类似
条件中的第一个
%
,因为它将导致
全表扫描,我猜!@N00bPr0grammer-如果关键字在字符串之间,它将不起作用在Mysql中工作,在Sql Server中工作,安装Sql Server并尝试..我将t您不知道在sql server上是否也可以。同意,当且仅当关键字位于字符串之间时!