【发布时间】:2009-10-21 08:35:35
【问题描述】:
我正在构建一个提示性标记系统(听起来很糟糕),我将一个字符串传递给数据库,如果有匹配项,它会发回该标记。我想停止重复标签,所以如果一个标签是WEB,我只希望它返回一次。因此,如果我将 WEB 作为标签,然后添加 WEEKLY,则键入“WE”不会作为建议再次显示 WEB。
但是,似乎无法正常工作。我发送当前标签并使用 NOT IN() 删除任何重复项。下面是SP代码:
SELECT TOP 1 t.vTagName As vTagName
FROM Tags t
WHERE t.vTagName LIKE @vTagName+'%'
AND t.nTagPortalId = @nPortalId
AND t.vTagName NOT IN(@vCurrentTags)
ORDER BY vTagName ASC
这就是传入的内容:
EXEC GetTagSuggest 'We','Web,Print,Design,Advertising,Revenue'
对此查询的响应是 vTagName = Web。显然,这不是一个正确的结果,因为它应该是 vTagName LIKE "We" NOT IN "Web, etc..."..
提前致谢!
【问题讨论】:
-
Erland Sommarskog 在执行这些类型的搜索的各种方式上都有很好的article
标签: sql-server-2008 stored-procedures in-function