厚脸皮继续提问,这个语句如何改

yowbell 2007-11-06 11:23:28

Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp
Where id=+@ic

上面的这个语句如何变成:


@SQL ='

Select @k6=ISNULL(@k6,'') + ',' + CaseChar + '' From #tmp
Where id=+@ic
--这句要如何改保证语法正确,注意K6是一个变量,K6 =@IC

'
...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Limpire 2007-11-07
  • 打赏
  • 举报
回复
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+''''
yowbell 2007-11-07
  • 打赏
  • 举报
回复
谢谢各位的解答
SQLnewlearner 2007-11-07
  • 打赏
  • 举报
回复
估计小楼是当教师的。讲问题特清楚。
yowbell 2007-11-06
  • 打赏
  • 举报
回复

Select @ic=ISNULL(@ic,'') + ',' + CaseChar From #tmp Where id=+@ic

直接改这句试试
yowbell 2007-11-06
  • 打赏
  • 举报
回复
凤兄:
服务器: 消息 105,级别 15,状态 1,行 3
字符串 '),name #tmp
Where id=@ic
' 之前有未闭合的引号。
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: '),name #tmp
Where id=@ic
' 附近有语法错误。
samfeng_2003 2007-11-06
  • 打赏
  • 举报
回复



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
中国风 2007-11-06
  • 打赏
  • 举报
回复
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
中国风 2007-11-06
  • 打赏
  • 举报
回复

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 行)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧