注册 登录
编程论坛 SQL Server论坛

[求助]拼接SQL语句问题

爱猪の云 发布于 2007-01-23 13:54, 967 次点击

我要做歌存储过程``代码如下:
CREATE PROCEDURE P_待答问题
@富翁名称 char(16),
@页数 int
as
declare @i int,@str varchar(8000)
set @str='select top 20 发帖ID,悬赏分数,标题,发帖人 as 提问者,发帖时间,回复次数,阅读次数,最后回帖者,最后回帖时间 from Ta_发帖表 where 发帖ID not in (select top '
set @str=@str+ str((@页数-1)*20 ) + ' 发帖ID from Ta_发帖表 where 是否结帖=0 and 发帖人='+''
set @str=@str+ @富翁名称 + 'order by 发帖时间 desc) and 是否结帖=0 and 发帖人='
set @str=@str+ @富翁名称 + 'order by 发帖时间 desc'
print(@str)
GO
/*执行*/
declare @ret int
exec P_待答问题 '成员3','1'
我执行完成的时候是这样的:
select top 20 发帖ID,悬赏分数,标题,发帖人 as 提问者,发帖时间,回复次数,阅读次数,最后回帖者,最后回帖时间 from Ta_发帖表 where 发帖ID not in (select top 0 发帖ID from Ta_发帖表 where 是否结帖=0 and 发帖人=成员3 order by 发帖时间 desc) and 是否结帖=0 and 发帖人=成员3 order by 发帖时间 desc

但是我想要的结果是:
select top 20 发帖ID,悬赏分数,标题,发帖人 as 提问者,发帖时间,回复次数,阅读次数,最后回帖者,最后回帖时间
from Ta_发帖表 where 发帖ID not in (select top 0 发帖ID from Ta_发帖表
where 是否结帖=0 and 发帖人=' 成员3 ' order by 发帖时间 desc) and 是否结帖=0 and 发帖人='成员3 ' order by 发帖时间 desc
就是在后面条件那里``我想要的是:发贴人='成员3'(就是我标有红色的地方不同),那单引号怎么拼接上去的啊...
请大侠帮改下...要怎么拼接才能发那单引号也能出来......我是菜鸟``大家不要笑我......

6 回复
#2
Kendy1234562007-01-23 14:15
拿芋头来当学费就行~

你的问题其实就是 在拼sql语句的时候怎么把单引号拼进去! 简单的说 连写2个单引号 对于sql来说当做转义字符解析成单引号了

declare @A varchar(100)
set @A = 'I like '''+' nice girl '+'''very much!'
print @A

结果: I like ' nice girl 'very much!
#3
爱猪の云2007-01-23 14:41
呵呵```你也知道我们荔浦的芋头出名啊``哈哈...正中个荔浦芋头来拉`````
你这个好像不行啊...
我的那@富翁名称是执行存储过程的时候是用户动态输入的.并不是固定的啊..
你这个好像执行的时候就直接显示是:发帖人='@富翁名称'...并不是:发贴人='成员3'啊 ...
```
#4
Kendy1234562007-01-23 16:52
...你把这块代码改成这样不就行了?

set @str=@str+ str((@页数-1)*20 ) + ' 发帖ID from Ta_发帖表 where 是否结帖=0 and 发帖人='''
set @str=@str+ @富翁名称 + ''' order by 发帖时间 desc) and 是否结帖=0 and 发帖人='''
set @str=@str+ @富翁名称 + ''' order by 发帖时间 desc'
#5
爱猪の云2007-01-23 17:00
呵呵...
谢谢啦......
真是高手.....
#6
bygg2007-01-23 20:37
记住,第一个单引号是转义的.
#7
爱猪の云2007-01-24 08:29
谢谢大家啦```
1