我正在尝试实现一些我不知道该怎么做的事情。我正在开发一个基于 ASP Classic 和 SQL 2008、IIS7 的网站。在搜索页面中,我可以选择为每个查询设置几个值,例如default.asp?q=one|two|three&q2=four|five|six
.
我想要做的是使用通配符,以防我的查询没有价值,并且能够同时在一个列中搜索几个单词,以防我的查询有几个价值。这是我想做的事情:
- 如果查询有价值,那么在数据库中就可以了(这很简单)
- 如果查询有一对用“|”分隔的值 签名然后拆分它们并搜索所有这些。
- 如果查询根本没有价值,则使用通配符并且不要搜索任何内容。
所以为了实现这一点,我尝试了几件事,但没有取得任何成功。这是我的代码示例。
一 - - - - - -
@style nVarchar(150) = ''
Select * FROM mytable WHERE CONTAINS(style, @style) AND ...
我可以设法将查询拆分为类似'"* value1 *" OR "* value2 *"'
从 CONTAINS 中获得最佳结果的查询,但是如果“样式”具有价值,则此查询有效。如果样式没有值,则没有通配符,因此我可以检索所有数据而无需过滤数据库。
二 - - - - - - - -
@style nVarchar(150) = ''
Select * FROM mytable WHERE style LIKE '%' + @style + '%' AND ...
使用 LIKE 子句,我可以使用通配符'%'
,以防样式没有任何值,但我无法在同一列中搜索几个值。
所以,请记住我正在使用“存储过程”,因为这有点复杂,我需要在几个地方使用它。我将对此搜索进行 10-12 个查询。
任何想法都会帮助我实现这一目标。