首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

为何这个变量没有输出

2012-09-06 
为什么这个变量没有输出?SELECT 年龄 FROM 客户表 WHERE 姓名熊俊上面的句子能看到全部输出,DECLARE @

为什么这个变量没有输出?
SELECT 年龄 FROM 客户表 WHERE 姓名<>'熊俊'

上面的句子能看到全部输出,

DECLARE @age int
SELECT @age = 年龄 FROM 客户表 WHERE 姓名<>'熊俊'

为什么上面的句子却没有输出?

[解决办法]

SQL code
--这样才会有输出DECLARE @age int;with 客户表(姓名,年龄) as(select '熊俊',20union all select '其他1',30union all select '其他2',40)SELECT @age = 年龄 FROM 客户表 WHERE 姓名<>'熊俊'--你此处只是给@age变量赋值,并不是选择任何结果,而且多条记录(此处30,40)时,会返回最后一个符合条件的值select @age /*-----------40(1 行受影响)*/
[解决办法]
SQL code
SELECT @age = 年龄 FROM 客户表 WHERE 姓名<>'熊俊'--这条语句的作用是给变量@age赋值,并没有输出,而且这样赋值的话还有个问题,就是当姓名<>'熊俊'--的记录数据大于两个时,它只会取其中的一条,可能不是你想要的SELECT @age --再加上这条语句才会输出@age的值.
[解决办法]
SQL code
--哥们,你理解错了。此处 SELECT @age = 年龄 FROM 客户表 WHERE 姓名<>'熊俊'--是给@age赋值,而你要有结果输出,上面是一个例子年龄必须有一个或多个值且有符合where条件的DECLARE @age int;with 客户表(姓名,年龄) as(select '熊俊',20union all select '其他1',30union all select '其他2',40)SELECT @age = 年龄 FROM 客户表 WHERE 姓名<>'熊俊'select @age --------------------------------------/*40(1 行受影响)*/
[解决办法]
SQL code
DECLARE @age int                  -- 定义变量SELECT @age = 年龄     FROM 客户表 WHERE 姓名<>'熊俊'  -- 变量赋值select @age                       -- 变量输出
[解决办法]
探讨
SQL code

DECLARE @age int -- 定义变量
SELECT @age = 年龄
FROM 客户表 WHERE 姓名<>'熊俊' -- 变量赋值
select @age -- 变量输出

[解决办法]
虽然两个都是 select, 可是作用不一样

第一个只是查询, 当然有输出查询结果
第二个是查询并赋值, 当然就没有输出, 也就是你把查询结果重定向到变量里面了
 你要输出, 那应该另写语句来输出变更, 比如 select @age, 或者 print @age

[解决办法]
你这个是赋值,不是查询。
[解决办法]
DECLARE @age int -- 定义变量
SELECT @age = 年龄 
FROM 客户表 WHERE 姓名<>'熊俊' -- 变量赋值
select @age -- 变量输出

第一个Select 只是为 变量@age 赋值
第二个Select 才是输出 变量@age 的值

热点排行