if left(@TempFields,1)=',' --去除最左边的逗号 set @TempFields = substring(@TempFields, 2, len(@TempFields)) if right(@TempFields,1)=',' --去除最右边的逗号 set @TempFields = substring(@TempFields, 1, len(@TempFields)-1)
set @SQL2 = @SQL2 + ' select identity(int,1,1) as PK,' + @TempFields + ' into #tb from ' + @Tables + @Where + ' order by ' + @OrderBy --**************************************************************************** --********去除字段的表名前缀,当有字段有别名时,只保留字段别名********* --**************************************************************************** declare @TotalFields varchar(500) declare @tmp varchar(50) declare @i int declare @j int declare @iLeft int --左括号的个数 declare @iRight int --右括号的个数 set @i = 0 set @j = 0 set @iLeft = 0 set @iRight = 0 set @tmp = '' set @TotalFields = ''
while (len(@Fields)>0) begin set @i = charindex(',', @Fields)
--去除字段的表名前缀 if (@i=0) begin --找不到逗号分割,即表示只剩下最后一个字段 set @tmp = @Fields end else begin set @tmp = substring(@Fields, 1, @i) end set @j = charindex('.', @tmp) if (@j>0) set @tmp = substring(@tmp, @j+1, len(@tmp)) --*******当有字段有别名时,只保留字段别名*********
--带括号的情况要单独处理,如Convert(varchar(10), B.EndDate, 120) as EndDate