SQL server中通过传入的参数不同所执行的查询条件不同的sql语句
时间: 2024-02-16 17:02:54 浏览: 26
可以使用动态SQL来根据传入的参数动态生成不同的查询条件。下面是一个示例:
```sql
DECLARE @param1 INT = 1
DECLARE @param2 VARCHAR(50) = 'foo'
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT * FROM your_table WHERE 1=1'
IF @param1 IS NOT NULL
BEGIN
SET @sql = @sql + ' AND column1 = ' + CAST(@param1 AS VARCHAR(10))
END
IF @param2 IS NOT NULL
BEGIN
SET @sql = @sql + ' AND column2 = ''' + @param2 + ''''
END
-- 执行动态SQL
EXEC sp_executesql @sql
```
在上述示例中,首先定义了两个参数 `@param1` 和 `@param2`,然后根据这两个参数动态生成了查询条件。如果 `@param1` 和 `@param2` 均不为 NULL,则会生成如下的查询语句:
```sql
SELECT * FROM your_table WHERE 1=1 AND column1 = 1 AND column2 = 'foo'
```
如果 `@param1` 或 `@param2` 为 NULL,则相应的查询条件不会被包含在生成的查询语句中。需要注意的是,当使用动态SQL时,应尽量采取措施防止 SQL 注入攻击。