【问题标题】:Filter table data using select sql statement使用 select sql 语句过滤表数据
【发布时间】:2013-04-24 07:10:23
【问题描述】:

我想使用 select 语句过滤表格数据,我有四列,我还有四个文本框可以在每列中启用搜索,当我在文本中输入值时,我可以在任何框中输入值box(es) 我想返回与我输入的值匹配的记录,我该怎么做?

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 我试过这段代码,但它返回一条记录
  • 能否请您正确格式化代码并向我们展示完整过程定义。
  • @a_horse_with_no_name 完成,请检查一下

标签: sql select stored-procedures


【解决方案1】:

编辑:

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

如果要选择所有复选框都为真的记录,可以将 OR 交换为 AND。

【讨论】:

  • 但我想在单个网格视图中查看它们,我可以这样做吗?
  • 我理解错了吗,您希望结果是所有 4 个复选框的搜索结果相结合吗?
  • 再次编辑,现在应该可以使用了。如果您使用的是 oracle,请将 + 号更改为 ||
【解决方案2】:

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

但一般来说:

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 %"

这样做。

【讨论】:

    【解决方案3】:

    我希望这会奏效:

    Select * from <table-name> 
    where 
    <Column-name1> Like 'TextBox1%'
    or
    <Column-name2> Like 'TextBox2%'
    or
    <Column-name3> Like 'TextBox2%'
    or
    <Column-name4> Like 'TextBox4%'
    

    【讨论】:

    • 它返回所有列,而不过滤它们
    【解决方案4】:

    首先你需要找到text-box,其中传递了搜索字符串

    根据文本框,查询可以写在相关column

    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)
    

    【讨论】:

    • 请检查我的代码,我想过滤取决于多个参数,我发送它们取决于用户在文本框中输入的值
    • 现在试试,我忘了()
    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2013-10-25
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多