SQL Server“可选” 自由文本搜索

发布于 2024-07-26 06:04:44 字数 351 浏览 4 评论 0原文

我正在 SQL Server 2005 中为讨论板编写搜索查询。 该过程需要几个参数,但大多数都是“可选的”。 邮件正文有一个搜索字段,我在该字段上有一个全文索引。 问题是..

如果我传入一个值来使用 FreeText 进行搜索,则搜索工作正常(谢谢 Microsoft)。 但是,消息正文字段是可选的,这意味着在我的查询中,我想处理“搜索全部”。 如何将我的查询默认为仅使用任何\所有记录,而不管消息正文字段中保存的数据如何?

我知道这不起作用,但如果消息正文参数没有返回任何值,我会寻找类似的内容:

where (FREETEXT(msg.messagebody, '*'))

I'm writing a search query in SQL Server 2005 for a discussion board. The proc takes several parameters, but most are "optional". There's one search field for Message Body, which I have a full text index on. Here's the problem..

If I pass in a value to search against with FreeText, the search works fine (thank you Microsoft). However, the message body field is optional, meaning that in my query, I want to handle a "search all". How can I default my query to just use any\all records regardless of the data held in my message body field?

I know this doesn't work, but if no value is returned for the message body parameter, Im looking for something like:

where (FREETEXT(msg.messagebody, '*'))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏月而来 2024-08-02 06:04:44

你可以这样做:

从 Products_CatalogProducts 中选择 *,其中 (@keywords='*' 或 freetext(msg.messagebody,@keywords))

假设您在 @keywords 中传入 *(如果它为空)

You could do something like:

select * from Products_CatalogProducts where (@keywords='*' or freetext(msg.messagebody,@keywords))

Assuming you passed in @keywords with a * if it's blank

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文