where条件里 用变量和用字符串结果不一样

心态要好 2012-11-15 04:00:59

长话短说 先来个简单的示例:

够简单吧,没问题吧


好了 我的问题来了:

再查询语句里赋值 然后打印到控制台:



把控制台里的复制出来当条件能查到结果:



直接使用定义的变量做条件就查不到结果:



根据报的错网上找了 也没明白什么意思,求大神 如果这种写法走不通,求其他写法
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 11 楼 lixzhong 的回复:
报什么错误?
into下面有个红线 不能使用select into from写入新表了 如果是循环到这 第二次插入再用select into from要报错了 select into from插入新表新表必须不存在,第一次插入 新表就有了 所有 能不能改成insert into from的形式?
开启时代 2012-11-15
  • 打赏
  • 举报
回复
报什么错误?
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 7 楼 lixzhong 的回复:
循环组成一个串 ,然后一次执行这个串就可以 得到多个结果集
改成select into from还不行 第二次再进来就报错 得是insert into from...
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 7 楼 lixzhong 的回复:
循环组成一个串 ,然后一次执行这个串就可以 得到多个结果集
我改成这样报错:
DECLARE @str nvarchar(max)
	set @str='SELECT id=1,C.PHost,C.PUrl,'+@R1+' R1,'+@R2+' R2 '+ into dataResult+' FROM (SELECT PHost,PUrl FROM Data2 WHERE '+@condtion+' ) C'
	exec (@str)
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 7 楼 lixzhong 的回复:
循环组成一个串 ,然后一次执行这个串就可以 得到多个结果集
兄弟的那个语句能改成select into from的形式 每次执行都写入新表 这样循环完毕就全写一个表里了,是我要的结果
开启时代 2012-11-15
  • 打赏
  • 举报
回复
循环组成一个串 ,然后一次执行这个串就可以 得到多个结果集
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 4 楼 lixzhong 的回复:
decalre @str varchar(max) set @str='SELECT id=1,C.PHost,C.PUrl,'+@R1+' R1,'+@R2+' R2 FROM (SELECT PHost,PUrl FROM Data2 WHERE '+@condtion+' ) C' exec (@str)
如果我是循环怎么办 @str+=... 这样生成的结果集是多个啊 有没有办法是一个
發糞塗牆 2012-11-15
  • 打赏
  • 举报
回复
拼接字符串,另外,你用nvarchar来存放一个表??
开启时代 2012-11-15
  • 打赏
  • 举报
回复
decalre @str varchar(max) set @str='SELECT id=1,C.PHost,C.PUrl,'+@R1+' R1,'+@R2+' R2 FROM (SELECT PHost,PUrl FROM Data2 WHERE '+@condtion+' ) C' exec (@str)
心态要好 2012-11-15
  • 打赏
  • 举报
回复
引用 1 楼 lixzhong 的回复:
最后一句换成下面的: declare @str varchar(max) set @str='select * from data2 where '+@condtion exec (@str) 别贴图片...
DECLARE @condtion nvarchar(255)
DECLARE @R1 nvarchar(255)
DECLARE @R2 nvarchar(255)

SELECT @condtion=A.Condtion from (
SELECT id = ROW_NUMBER() OVER (ORDER BY Condtion),* FROM ABC) A WHERE A.id=1
PRINT @condtion

SELECT @R1=B.R1,@R2=B.R2 from (
SELECT id = ROW_NUMBER() OVER (ORDER BY Condtion),* FROM ABC) B WHERE B.id=1
PRINT @R1
PRINT @R2

SELECT id=1,C.PHost,C.PUrl,@R1 R1,@R2 R2 FROM (
SELECT PHost,PUrl
FROM Data2
WHERE @condtion ) C
最后面 where条件后面的@condtion 怎么替换?
Mr_Nice 2012-11-15
  • 打赏
  • 举报
回复
DECLARE @Condtion nvarchar(255)
select @Condtion = A.Condtion from (
select id = row_number() over(order by condtion),* from abc) A where A.id = 1

print @condtion

declare @sql nvarchar(255)
set @sql = 'select * from Data2 '+' where '+@condtion

exec(@sql)
开启时代 2012-11-15
  • 打赏
  • 举报
回复
最后一句换成下面的: declare @str varchar(max) set @str='select * from data2 where '+@condtion exec (@str) 别贴图片...

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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