Sql server 根据不同的查询条件拼接SQL

测试表 user

id name age
1 小明 18

测试存储过程如下:

---存储过程展示了查询条件拼接
ALTER PROCEDURE [dbo].[test]
  @c AS int 
AS
BEGIN
	declare   @b nvarchar(max) ---声明变量存储不变的sql部分,用nvarchar类型
	SET @b = 'SELECT * FROM [user] WHERE ' ---变量赋值

	IF @c<11  ---根据变量判断拼接查询语句
		BEGIN
			SELECT @b =@b+'age<'+CAST(@c as nvarchar(5) )  --拼接sql
		END
	
	EXEC sp_executesql @b  --执行拼接完成的sql

END

注意事项:

1. 变量类型用nvarchar类型
2. 拼接SQL时赋值类型转换int转换为nvarchar类型
3. 如果要加单引号用四个单引号转义'''',实例如下:
  SELECT @sql = @sql+'a.FBILLNO='+''''+@billno+''''
4. 时间类型的转换,实例如下:
  SELECT @sql = @sql+'a.FCREATEDATE BETWEEN '+''''+CONVERT(varchar(20), @start,120)+''''+'AND'+''''+CONVERT(VARCHAR(20),@end,120)+''''
posted @ 2022-05-24 15:30  吉连  阅读(1106)  评论(0编辑  收藏  举报