使用SELECT SQL语句筛选表格数据

3

我想使用select语句来过滤表格数据,我的表格有四列,我也有四个文本框可以在每一列中启用搜索。我可以在任何一个或多个文本框中输入值,当我输入这些值时,我希望返回与我输入的值匹配的记录。如何做到这一点?

ALTER PROCEDURE dbo.test_search

    (
        @ID int,
    @FirstName nvarchar(50),
    @MiddleName nvarchar(50),
    @LastName nvarchar(50)
    )

AS
    SELECT     ID, FirstName, MiddleName, LastName
    FROM         StudentsInformation
    WHERE (@ID IS NULL OR StudentsInformation.ID = @ID) AND
           (@FirstName IS NULL OR StudentsInformation.FirstName = @FirstName )AND
           (@MiddleName IS NULL OR StudentsInformation.MiddleName = @MiddleName )AND
           (@LastName IS NULL OR StudentsInformation.LastName = @LastName )
    RETURN

展示一下你的代码和尝试过的方法? - Daanvn
你想用四列数据来检查数值吗? - Akash KC
@Daanvn 我尝试了这段代码,但它只返回了一条记录。 - Alaa
请您能否正确格式化代码并展示完整的过程定义。 - user330315
@a_horse_with_no_name 完成了,请检查。 - Alaa
4个回答

2

编辑:

SELECT 
id
, firstname
, middlename
, lastname    
FROM studentsinformation
WHERE id = @id        
OR firstname LIKE '%' + @firstname + '%'
    OR middlename LIKE '%' + @middlename + '%'
    OR lastname LIKE '%' + @lastname + '%'

如果您想选择所有复选框都为真的记录,则可以将OR替换为AND。


但我想在一个单一的网格视图中查看它们,我该怎么做? - Alaa
我理解你的意思是,你希望结果是来自所有4个复选框的组合搜索结果? - kyooryu
已编辑,现在应该可以工作了。如果您正在使用Oracle,请将+号更改为||。 - kyooryu

0

首先,您需要找到传递搜索字符串文本框

根据文本框,查询可以写在相关位置。

select * from table_name where column like '%text-box value%'

编辑

SELECT ID,FirstName,MiddleName,LastName
FROM  StudentsInformation
WHERE 1=1
ID=(case when @ID <>0 AND @ID IS NOT NULL then @ID else ID end)
and FirstName=(case when @FirstName<>'' and @FirstName IS NULL then @FirstName 
else FirstName)
and MiddleName=(case when @MiddleName<>'' and @MiddleName IS NULL then @MiddleName 
else MiddleName)
and LastName=(case when @LastName<>'' and @LastName IS NULL then @LastName 
else LastName)

请检查我的上面的代码,我想根据多个参数进行过滤,并且我会根据用户在文本框中输入的值发送它们。 - Alaa
现在试一下,我忘记了 **()**。 - Prahalad Gaggar

0
我希望这个能够运行:
Select * from <table-name> 
where 
<Column-name1> Like 'TextBox1%'
or
<Column-name2> Like 'TextBox2%'
or
<Column-name3> Like 'TextBox2%'
or
<Column-name4> Like 'TextBox4%'

它返回所有列,而不对它们进行过滤。 - Alaa

0

语法取决于您使用的编程语言。

但一般来说:

string sql="select * from tableName where"

if((txt1.Text!="")&&(sql=="select * from tableName where")
sql=sql+"colName like % @txt1 %"
else
sql=sql+" and colName like % @txt1 %"



if((txt2.Text!="")&&(sql=="select * from tableName where")
sql=sql+"colName like % @txt2 %"
else
sql=sql+" and colName like % @txt2 %"


if((txt3.Text!="")&&(sql=="select * from tableName where")
sql=sql+"colName like % @txt3 %"
else
sql=sql+" and colName like % @txt3 %"

像这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接