2012-08-09 117 views
1

SQL的LocalDB SELECT语句,我创建一个存储过程对我的.NET项目,它是这样的,与多个条件

ALTER PROCEDURE [dbo].[Search_PM_SELECTED] 
(
    @acID varchar(50), 
    @pmCat varchar(50), 
    @pmTitle varchar(50), 
    @pmUsername varchar(50), 
    @pmSiteURL varchar(100) 
) 
AS 
    SELECT * FROM pmPassword 
    WHERE acID = @acID and 
    pmCat like '%' + @pmCat + '%' or 
    pmTitle like '%' + @pmTitle + '%' or 
    pmUsername like '%' + @pmUsername + '%' or 
    pmSiteURL like '%' + @pmSiteURL + '%'; 

我试图做到的是要选择符合这些领域,除了所有记录他们必须在acid之内。为了进一步解释下面请看看;

acID pmCat  pmTitle pmUsername  pmSiteURL 
1  Windows  Google  MyName  www.somewhere.com  
2  Network  FTP   MyName  www.somewhere.com 

上面应该看起来像一张桌子。我只想显示与酸项目= 1

请大家注意,不自动递增,每当我添加一条记录这正是我在VB独自完成。 acid不是PK。我的PK是pmID这是不包含在查询中,因为我没有用它。

我正在与VBSQL LocalDB(2012)。

回答

3

ANDOR更高的优先级。您需要添加括号可以得到你想要的东西:

SELECT * 
FROM pmPassword 
WHERE acID = @acID 
AND 
(
    pmCat LIKE '%' + @pmCat + '%' 
    OR pmTitle LIKE '%' + @pmTitle + '%' 
    OR pmUsername LIKE '%' + @pmUsername + '%' 
    OR pmSiteURL LIKE '%' + @pmSiteURL + '%' 
); 

您的查询如下解释:

SELECT * 
FROM pmPassword 
WHERE (acID = @acID AND pmCat LIKE '%' + @pmCat + '%') 
OR pmTitle LIKE '%' + @pmTitle + '%' 
OR pmUsername LIKE '%' + @pmUsername + '%' 
OR pmSiteURL LIKE '%' + @pmSiteURL + '%' 
+0

非常快!解决了它。谢谢。 :) – 2012-08-09 18:52:26