Sql server MS-SQL多类查询

Sql server MS-SQL多类查询,sql-server,Sql Server,我有两个输入文本框:-书名和作者 我正在尝试使用存储过程在图书馆管理系统中进行搜索。 程序如下: ALTER PROCEDURE dbo.Library_AdvSearch ( @BookName varchar(50), @Author varchar(50) ) AS Select * from Library_Book where ( BookName Like '%'+ @BookName +'%' OR Author

我有两个输入文本框:-书名和作者

我正在尝试使用存储过程在图书馆管理系统中进行搜索。 程序如下:

ALTER PROCEDURE dbo.Library_AdvSearch
    (
        @BookName varchar(50),
        @Author varchar(50)

    )
AS
    Select * from Library_Book 
    where ( BookName Like '%'+ @BookName +'%' OR Author Like '%'+@Author+'%')

RETURN
这将产生一个模糊的结果,并显示与表相关的所有数据

现在我的问题是:我想重新设计我的查询,如果我不在Bookname中插入任何值,只定义author,它应该显示相应的表条目

我的桌子看起来像

BOOk name|Author
C        |qwerty
let us C |asdfg
java     |xyz
现在,如果我只输入xyz,它应该在gridview中显示java和xyz

所以,请帮助我在商店的程序

任何帮助都将不胜感激

试试这个

ALTER PROCEDURE dbo.Library_AdvSearch
(
    @BookName varchar(50) = '',
    @Author varchar(50) = ''
)
AS
Select * from Library_Book 
WHERE((@BookName = '' OR BookName Like '%'+ @BookName +'%')
AND (@Author = '' OR Author Like '%'+@Author+'%'))

RETURN

如果将
@BookName
留空,则基本上是在搜索
BookName,如“%”
,换句话说:所有书籍

我将使用一个参数:

select * from Library_Book 
where ( BookName Like '%'+ @Parameter +'%' OR Author Like '%'+ @Parameter +'%')

如果我理解正确,问题是匹配所有书籍/作者,而它们为空,并且您希望排除它们。因此,将OR更改为,使其符合所有标准。 但我不确定我是否正确理解了你

ALTER PROCEDURE dbo.Library_AdvSearch
        (
            @BookName varchar(50),
            @Author varchar(50)

        )
    AS
        Select * from Library_Book 
        where ( BookName Like '%'+ @BookName +'%' AND Author Like '%'+@Author+'%')

    RETURN

BookName像@BookName+'%'或Author像@Author+'%'thnx 4 help,,,但当我尝试将“xyz”作为作者的输入时,它仍然会产生模棱两可的结果。我不知道为什么itz的行为如此奇怪。如果您将文本框值传递给sp,请也共享该代码。受保护的void BtnSearch_Click(对象发送者,事件参数e){dataclass ob=new dataclass();if(Panel1.Visible!=false){GridView1.DataSource=ob.LibraryBookSearch(TxtSearch.Text);;GridView1.DataBind();}else{GridView1.DataSource=ob.LibraryBookSearchAdv(TxtSearch.Text,TxtAuthor.Text,TxtPubYear.Text,TxtPublication.Text);GridView1.DataBind();}}}这里的面板用于在Sp中进行高级搜索切换,我想您需要使用
而不是
,进行检查。如果我更改textbox的属性并将默认值设置为单空格会怎么样可以吗?这取决于你在哪里使用它,它会给你一个书名,或者是一个包含空白的作者。如果你在作者字段中有全名(“FiestNordLaSTND”)您的查询将返回所有作者。请注意,我想说的是,如果我只输入作者值,,,并将BOOKNAME数据保留为空,,,则会显示@BOOKNAME参数未提供的错误,,,请帮助我理解,但如果您指定了一个参数,则不能忽略它。请尝试使用一个参数处理这两个字段。thnx 4帮助,,,,但如果我只为作者输入,而不是为bookname输入,,,在这种情况下,它会显示一个错误,即没有提供bookname,,,plz help:(抱歉,伙计,但没有人能正确地帮助您“它显示一个错误”.Post您的错误消息!!但听起来您在客户端有错误。另外,正如我所写,您需要传递“”not NULL,但这可能是进一步的。上面提到过,,,我正在再次指定它,当我尝试只传递“XYZ”时,错误是“@BOOKNAME参数未提供”作为author的值,根据我的表,它应该返回一个字段(请参阅相关的表以供参考),,,,,plz help