我想在SQL中搜索具有多个条件的student
,例如:name
,age
。但是我们可能只有姓名或只有年龄值,或者我们可能对用户的信息都有价值。我使用HTML
中的表单来获取值。我不知道如何编写查询以选择它们是否未填充所有文本字段。
如果我只有名称值,则查询为
SELECT * FROM stuTBL WHERE name = @name
如果我只有age
值,则查询
SELECT * FROM stuTBL WHERE age = @age
如果我拥有所有值,则查询为
SELECT * FROM stuTBL WHERE name = @name AND age = @age
但是什么查询将涵盖用户输入的内容?
答案 0 :(得分:0)
检查@name = ''
,@age = ''
以及条件。如果@name
为空,则仅检查年龄条件。如果@age
为空,则仅检查名称条件。
如果两个参数都有有效数据,那么这两个条件都可以正常工作
SELECT *
FROM stuTBL
WHERE (name = @name OR ISNULL(@name, '') = '')
AND (age = @age OR ISNULL(@age, '') = '')
答案 1 :(得分:0)
试试这个
SELECT *
CASE name
WHEN name = (@name OR @name = '')
CASE age
WHEN age = (@age OR @age = '')
END
FROM stuTBL
答案 2 :(得分:0)
@austin wernli评论是一个答案,我找到了另一种方法来使用
SELECT * FROM stuTBL WHERE (name = @name或@name为null) AND(年龄= @age或@age为空)