【发布时间】:2015-11-24 03:58:12
【问题描述】:
我正在尝试编写一个 SQL 查询来过滤产品表中的记录以根据搜索文本进行搜索。 文本将有多个用空格分隔的单词(例如三星 s6)
问题是结果应该包含结果中的所有单词。
现在记录可以有类似的名字
- 三星s6
- 三星 Galaxy s6
- 三星A5
- 三星 Galaxy s6 edge
- 苹果 iPhone 6
现在搜索文本“samsung s6”应该在结果中获得记录 1,2,4,但我尝试的方式是在结果中给我 1,2,3,4 行。
我的查询是:
CREATE TABLE #TempSearch
(
ID INT IDENTITY(1,1),
Value VARCHAR(200)
)
INSERT INTO dbo.#TempSearch
SELECT * FROM CSVToTable(ISNULL(@ModelName,''),' ')
SELECT
T1.*
FROM
<table1> T1 INNER JOIN #TempSearch T2 ON T1.Name LIKE CONCAT('%', T2.Value, '%')
我在一个临时表中获取了搜索字符串,其中每个单词都有一行(以空格分隔)
然后inner加入主表。
【问题讨论】:
-
请提供想要的结果。
-
@PM77-1 我在问题“对于搜索文本'samsung s6'我应该得到记录 1,2,4 但我尝试的方式是给我 1,问题中记录的结果中有 2,3,4 行。”
标签: sql sql-server search join