这就是我试图以最简单的形式实现的目标:
SELECT
p.ProductId,
p.ProductName,
p.SKU
FROM tbl_Product p
WHERE (p.ProductName LIKE '%white%' OR p.SKU LIKE '%white%')
AND (p.ProductName LIKE '%cup%' OR p.SKU LIKE '%cup%')
我正在尝试在 UDF 中执行此操作,它接受所有搜索词的逗号分隔参数。
我尝试将该参数拆分为一个临时表并尝试连接,如下所示:
DECLARE @SearchText nvarchar(1000) SELECT @SearchText='white,cup'
DECLARE @SearchTerms TABLE (String nvarchar(200))
INSERT INTO @SearchTerms (String)
SELECT '%' + String + '%' FROM dbo.CsvSplitString(@SearchText)
SELECT
p.ProductId,
p.ProductName,
p.SKU
FROM tbl_Product p
JOIN @SearchTerms s ON (p.ProductName LIKE s.String OR p.SKU LIKE s.String)
但这不会返回我想要的 - 它返回名称或 SKU 与任一搜索词匹配的任何记录。我需要它像第一个查询一样返回,其中名称或 SKU 匹配所有搜索词(我认为这是有道理的)。
将非常感谢朝着正确的方向推动 - 如果您需要我更具体,请告诉我。
注意:全文搜索目前不是一个可行的选择。
谢谢!