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