在 T-SQL 中,如何编写查询来为列的任何整数值选择行?
比如数据是这样的
NAME,AGE
A,10
B,20
C,10
D,20
并且有一个<asp:dropdownlist>
有两个选项,10,20
,以便用户可以选择10
or 20
。如果用户选择10
or 20
,数据被正确拉取,但是我怎么说*
健康)状况?? - 就像选择中的任何值的所有数据age
柱子??
我的代码如下,
select ...where (AGE = @AGE)
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="AGE" PropertyName="SelectedValue"
DbType="Int32" DefaultValue="ANY"
另外,以下查询在 SSMS 中完美运行,但是如何在 asp.net SqlDataSource 中实现此行为?
SELECT * FROM [TABLE] where AGE is not null
如果 AGE 列是 varchar 类型,我可以使用“%”,但它是一个数字字段
Thanks,
要提供 ALL/ANY 选项,您需要指定一个哨兵值(一个永远不会存在于数据集中的值),以便您可以检查提交到存储过程的变量,以便知道何时忽略该变量并使用正确的 WHERE 子句。
IE:如果下拉列表中有一个元素的显示文本为“All”且值为-1,则以下动态 SQL 将是合适的:
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT *
FROM [YOUR_TABLE]
WHERE 1 = 1 '
SET @SQL = @SQL + CASE
WHEN @age > 0 THEN
' AND age = @age '
ELSE
' AND age IS NOT NULL '
END
BEGIN
EXEC sp_executesql @SQL N'age INT', @age
END
See 此链接了解有关 TSQL/SQL Server 中动态 SQL 的更多详细信息 http://www.sommarskog.se/dynamic_sql.html.
但您不必使用动态 SQL - 这是等效的:
IF @age > 0
BEGIN
SELECT *
FROM [YOUR_TABLE]
WHERE age IS NOT NULL
END
ELSE
BEGIN
SELECT *
FROM [YOUR_TABLE]
WHERE age = @age
END
...只是你可以想象,如果你有多个彼此独立的参数,这会变得多么笨拙。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)