Asp.net 部分原始查询排除了NULL,因此我假设不会查询NULL。选择“ANY”是因为它是DropDownList 1中的默认值,用于选择要显示的年龄。如果此解决方案因某种原因无法工作,OP可以提供更多详细信息。 NAME,AGE A,10 B,20 C,10 D,

Asp.net 部分原始查询排除了NULL,因此我假设不会查询NULL。选择“ANY”是因为它是DropDownList 1中的默认值,用于选择要显示的年龄。如果此解决方案因某种原因无法工作,OP可以提供更多详细信息。 NAME,AGE A,10 B,20 C,10 D,,asp.net,sql,sql-server,tsql,Asp.net,Sql,Sql Server,Tsql,部分原始查询排除了NULL,因此我假设不会查询NULL。选择“ANY”是因为它是DropDownList 1中的默认值,用于选择要显示的年龄。如果此解决方案因某种原因无法工作,OP可以提供更多详细信息。 NAME,AGE A,10 B,20 C,10 D,20 string sql = "SELECT * FROM [TABLE] WHERE 1=1"; sql += " AND AGE = @age"; datasource.SelectCommand = "SELECT * FROM

部分原始查询排除了NULL,因此我假设不会查询NULL。选择“ANY”是因为它是DropDownList 1中的默认值,用于选择要显示的年龄。如果此解决方案因某种原因无法工作,OP可以提供更多详细信息。
NAME,AGE
A,10
B,20
C,10
D,20
string sql = "SELECT * FROM [TABLE] WHERE 1=1";
sql += " AND AGE = @age";
datasource.SelectCommand = "SELECT * FROM [TABLE] WHERE 1=1 AND (AGE = @age OR @age = -1)";
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
IF @age > 0 
BEGIN

   SELECT * 
     FROM [YOUR_TABLE]
    WHERE age IS NOT NULL

END
ELSE
BEGIN

   SELECT * 
     FROM [YOUR_TABLE]
    WHERE age = @age

END
CREATE TABLE #table (
  age int
)
GO

INSERT INTO #table VALUES (10)
INSERT INTO #table VALUES (20)
INSERT INTO #table VALUES (30)
GO

DECLARE @param varchar(10)
SET @param = 10
SELECT * FROM #table WHERE age = @param

SET @param = 'ANY'
SELECT * FROM #table WHERE age = COALESCE(NULLIF(@param,'ANY'),age)
age
-----------
10

(1 row(s) affected)

age
-----------
10
20
30

(3 row(s) affected)
SELECT *
FROM <Table>
WHERE (@Age is Null OR @Age = '' OR @Age = Age)
Select Name, Age from 
(
      SELECT 
       (CASE 
        WHEN @p1 = '*' THEN '*'   
        ELSE    CONVERT(NVarChar,Age)
        END) AS SearchCriteria, 
        Name, 
        Age
    FROM table
 ) 
 t
 where SearchCriteria = @p1
WHERE (age = @age OR @age = -1)
SELECT * FROM Table WHERE @Age > 0 
NAME,AGE
A,10
B,20
C,10
D,20
E,11
SELECT * FROM (SELECT CAST(AGE AS VARCHAR) as Age FROM Ages) tmp where Age like '1%'
SELECT * FROM (SELECT CAST(AGE AS VARCHAR) as Age FROM Ages) tmp where Age like '%0'