34,594
社区成员
发帖
与我相关
我的任务
分享
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp
Where id=+@ic
@SQL ='
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp
Where id=+@ic
--这句要如何改保证语法正确,注意K6是一个变量,K6 =@IC
'
STEP BY STEP:
1.查询分析器写上这2句
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp Where id=@ic
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp Where id=@ic and Status=1
2.按 Ctrl+H 1点全部替换成2点:' -> '' 得到:
Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic
Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic and Status=1
3.赋值
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic'
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic and Status=1'
4.处理变量
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='+@ic
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='+@ic+' and Status=1'
5.如果id是字符型,两边各加2点
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='''+@ic+''''--为什么这里是4点,执行第6步
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='''+@ic+''' and Status=1'
6.按 Ctrl+H 将 and Status=1换成无内容:
1.
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp Where id=@ic
Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp Where id=@ic
2.
Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic
Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic
3.
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic'
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id=@ic'
4.
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='+@ic
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='+@ic+''
-->
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='+@ic
5.
@SQL1='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='''+@ic+''''
@SQL2='Select @k6=ISNULL(@k6,'''') + '','' + CaseChar + '''' From #tmp Where id='''+@ic+''''
Select @ic=ISNULL(@ic,'') + ',' + CaseChar From #tmp Where id=+@ic
DECLARE @SQL NVARCHAR(3000),@k6 VARCHAR(20),@ic INT
SET @SQL ='
Select @k6=ISNULL(@k6,''),name #tmp
Where id=@ic
'
EXEC sp_executesql @SQL,N'@k6 VARCHAR(20),@ic INT',@k6,@ic
select Name='a',ID=1
into #tmp
union
select 'b',ID=1
--------如果要输出,在字符串里定义一个变量
DECLARE @SQL NVARCHAR(3000), @Out VARCHAR(20),@ic INT
set @ic=1
SET @SQL =
'
declare @k6 VARCHAR(20)
Select @k6=ISNULL(@k6,'''')+'',''+name from #tmp
Where id=@ic
select @out=@k6 '
EXEC sp_executesql @SQL,N'@out VARCHAR(20) output,@ic int ',@out=@Out output,@ic=@ic
select @Out
select Name='a',ID=1
into #tmp
union
select 'b',ID=1
DECLARE @SQL NVARCHAR(3000), @k6 VARCHAR(20),@ic INT
set @ic=1
SET @SQL =
'
declare @k6 VARCHAR(20)
Select @k6=ISNULL(@k6,'''')+'',''+name from #tmp
Where id=@ic
select @k6 '
EXEC sp_executesql @SQL,N'@ic int ' ,@ic
--------------------
,a,b
(所影响的行数为 1 行)