(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)) '
同样道理,如果碰到函数,只需要将函数结果转化为字符串就行