为什么用变量后,就查不出结果

wrost 2012-02-28 07:33:11

这一段不管是否用变量,@ShiftID,查询的结果都是一样的。

declare @ShiftID nvarchar
set @ShiftID='8'select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='8' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime



但是这一段,把值改了后,用变量就查不出来。 不用,就有结果。 都是一样的编码啊

declare @ShiftID nvarchar
set @ShiftID='19'select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='19' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime






...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wrost 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 maco_wang 的回复:]
默认是一个长度,所以你的8 是好使的。
[/Quote]

是的,你说了后,我才意识到
叶子 2012-02-28
  • 打赏
  • 举报
回复
默认是一个长度,所以你的8 是好使的。
wrost 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maco_wang 的回复:]
SQL code

declare @ShiftID nvarchar 这个要给个长度

例如
declare @ShiftID nvarchar(10)
[/Quote]
郁闷死了 解决了!!

非常感谢!!!
wrost 2012-02-28
  • 打赏
  • 举报
回复
好的,我先试试
wrost 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maco_wang 的回复:]
SQL code

declare @ShiftID nvarchar 这个要给个长度

例如
declare @ShiftID nvarchar(10)
[/Quote]

但是这一段没给长度,也可以的

declare @ShiftID nvarchar
set @ShiftID='8'
叶子 2012-02-28
  • 打赏
  • 举报
回复

declare @ShiftID nvarchar
set @ShiftID='19'
select @ShiftID
/*
1
*/


你运行这个就明白了,你没有给长度,默认为1 。
叶子 2012-02-28
  • 打赏
  • 举报
回复
declare @ShiftID nvarchar 这个要给个长度

例如
declare @ShiftID nvarchar(10)

叶子 2012-02-28
  • 打赏
  • 举报
回复
应该是一样的呀
wrost 2012-02-28
  • 打赏
  • 举报
回复
不好意思,一急,上边2段编辑得不好


这一段不管是否用变量,@ShiftID='8',查询的结果都是一样的


declare @ShiftID nvarchar
set @ShiftID='8'
select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='8' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime




但是这一段,把值改了后@ShiftID='19',用变量就查不出来。 不用,就有结果。 都是一样的编码啊

declare @ShiftID nvarchar
set @ShiftID='19'
select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='19' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


wrost 2012-02-28
  • 打赏
  • 举报
回复
这一段不管是否用变量,@ShiftID,查询的结果都是一样的。

declare @ShiftID nvarchar
set @ShiftID='8'
select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime

但是这一段,把值改了后,用变量就查不出来。 不用,就有结果。 都是一样的编码啊
select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='8' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime




declare @ShiftID nvarchar
set @ShiftID='19'
select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id=@ShiftID and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


select sum(menCount) sumCount,weekID,s.deptID ,BeginTime,EndTime
from shift s,shiftDetail sd
where s.id='19' and sd.shiftID = s.id
group by weekID,s.deptID,BeginTime,EndTime


34,593

社区成员

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

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