(1)直接字符串
如果需要在动态SQL语句中使用空格或者字符串必须使用转义单引号
例如:declare @sql varchar(500)
set @sql = 'select xxx from xxx where isnull(CustomCName, '''') <> ''xxx'''
这里,空格和字符串均使用双引号即可
(2)间接字符串
有时候必须将datetime类型或者int类型的参数放入动态SQL中,此时这些参数必须通过字符串转换函数转换为字符串
比如datetime类型的@StartDate参数:
set @sql = 'select xxx from xxx where DataDate >= ''' + convert(varchar(10), @StartDate, 120) + ''''
int类型的
set @sql = 'select xxx from xxx where cast(day(StartDate) as varchar(5)) < cast(day(EndDate) as varchar(5))'
或者
set @sql = 'select xxx from xxx where convert(varchar(5),day(StartDate)) < convert(varchar(5),day(EndDate)) '
同样道理,如果碰到函数,只需要将函数结果转化为字符串就行
本文介绍了在SQL中构造动态语句的方法,包括如何正确使用转义字符来处理空值和字符串,以及如何将不同类型的数据如datetime和int类型转换为字符串格式以便在动态SQL中使用。
2万+

被折叠的 条评论
为什么被折叠?



