【发布时间】:2016-03-09 12:51:53
【问题描述】:
我对 SQL Server 相当陌生,但我必须编写一个存储过程,该过程将使用关键字列表搜索特定表,并且假设返回找到命中的行,我编写了一个有效的查询但问题是当我必须修改关键字列表时,我必须从头开始编写查询。
查询如下
SELECT *
INTO [playground].[dbo].[New table name]
FROM [playground].[dbo].[Main table]
WHERE [Document Type Description] LIKE 'Alcohol'
OR [Document Type Description] LIKE 'DSTV'
OR [Document Type Description] LIKE 'Entertainment' OR
[Document Type Description]like'Bday' OR
[Document Type Description]like'Birthday' OR
[Document Type Description]like'Bar' OR
[Document Type Description]like'Booze' OR
[Document Type Description]like'Catering' OR
[Document Type Description]like'Farewell' OR
[Document Type Description]like'Food' OR
[Document Type Description]like'Function' OR
[Document Type Description]like'Meals' OR
[Document Type Description]like'Year end functions' OR
[Document Type Description]like'Womens day' OR
[Document Type Description]like'Womans day' OR
[Document Type Description]like'Tuck shop' OR
[Document Type Description]like'Teambuilding' OR
[Document Type Description]like'Refreshment' OR
[Document Type Description]like'Liquor' OR
[Document Type Description]like'Lunch' OR
[Document Type Description]like'Water' OR
[Document Type Description]like'Bread' OR
[Document Type Description]like'Breakaway' OR
[Document Type Description]like'Canteen' OR
[Document Type Description]like'Gifts' OR
[Document Type Description]like'Glass' OR
[Document Type Description]like'Glasses' OR
[Document Type Description]like'Glassware' OR
[Document Type Description]like'Ticket' OR
[Document Type Description]like'Rugby' OR
[Document Type Description]like'Cricket' OR
[Document Type Description]like'Tea cups' OR
[Document Type Description]like'Tea' OR
[Document Type Description]like'Sugar bowl' OR
[Document Type Description]like'Sugar' OR
[Document Type Description]like'Soup bowls' OR
[Document Type Description]like'Side plate' OR
[Document Type Description]like'Serving tray' OR
[Document Type Description]like'Saucers' OR
[Document Type Description]like'Tray' OR
[Document Type Description]like'Non slip tray' OR
[Document Type Description]like'Milk' OR
[Document Type Description]like'Milk jug' OR
[Document Type Description]like'Mugs' OR
[Document Type Description]like'Dessert' OR
[Document Type Description]like'Dessert spoons' OR
[Document Type Description]like'Dinner set' OR
[Document Type Description]like'Jug' OR
[Document Type Description]like'Kent' OR
[Document Type Description]like'Knifes' OR
[Document Type Description]like'Knives' OR
[Document Type Description]like'Cooler boxes' OR
[Document Type Description]like'Crockery' OR
[Document Type Description]like'Christmas' OR
[Document Type Description]like'Coffee' OR
[Document Type Description]like'Popcorn machine' OR
[Document Type Description]like'Cooler' OR
[Document Type Description]like'Freezer' OR
[Document Type Description]like'Fridge' OR
[Document Type Description]like'Fan ' OR
[Document Type Description]like'Extraction fan' OR
[Document Type Description]like'Heaters' OR
[Document Type Description]like'Water cooler' OR
[Document Type Description]like'Washing machine' OR
[Document Type Description]like'Warmer' OR
[Document Type Description]like'Vacuum cleaner' OR
[Document Type Description]like'Urn' OR
[Document Type Description]like'Thermostat'
最终我希望我有一个 SP 可以读取关键字数组并让我选择要在主表中搜索的表列
希望这是有道理的 提前谢谢你
【问题讨论】:
-
将这些字符串放在一个 TABLE 中,并在与 [Document Type Description] 相等的情况下加入您可以添加另一列来控制它们的包含。
-
@AlexK。 OP 使用的是
like,而不是平等。有没有办法在 SQL Server 中使用like比较语义来执行您所描述的操作? -
实际上他正在寻找平等(没有通配符,他说它按预期工作) - 是的,你可以
JOIN T ON X LIKE '%' + Y + '%'- -
你需要“喜欢”还是平等?如果你要使用 like - 在搜索字符串之前和之后添加 %
[Document Type Description] like '%Thermostat%'
标签: sql sql-server stored-procedures keyword-search