关于T-SQL的多重IF-ELSE嵌套
T-SQL中可以多重IF-ELSE嵌套吗?像java或是c#中那样,该如何实现?if(boolean)beginif(boolean)begin**endend像这样写报...
T-SQL中可以多重IF-ELSE嵌套吗?像java或是c#中那样,该如何实现?
if(boolean)
begin
if(boolean)
begin
**
end
end
像这样写报错 不知道怎么回事? 展开
if(boolean)
begin
if(boolean)
begin
**
end
end
像这样写报错 不知道怎么回事? 展开
3个回答
展开全部
你写的时候,要按T-SQL的语法写就行了
IF boolean_expression
BEGIN
...
END
1、IF后面的布尔表达式是没有小括号的
2、IF-ELSE是可以嵌套的
例子1:
IF 1=1
BEGIN
PRINT 'TRUE'
END
例子2:
IF 1=1
BEGIN
IF 2=2
BEGIN
PRINT '2=2'
END
ELSE
BEGIN
PRINT '不是2=2'
END
END
ELSE
BEGIN
PRINT '不是1=1'
END
IF boolean_expression
BEGIN
...
END
1、IF后面的布尔表达式是没有小括号的
2、IF-ELSE是可以嵌套的
例子1:
IF 1=1
BEGIN
PRINT 'TRUE'
END
例子2:
IF 1=1
BEGIN
IF 2=2
BEGIN
PRINT '2=2'
END
ELSE
BEGIN
PRINT '不是2=2'
END
END
ELSE
BEGIN
PRINT '不是1=1'
END
2013-04-15
展开全部
例如这样
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
当然你可以让它print‘fasdfsd’其他的就是你的运用了
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
当然你可以让它print‘fasdfsd’其他的就是你的运用了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-15
展开全部
IF...ELSE
在执行 Transact-SQL 语句时强加条件。如果条件满足(布尔表达式返回 TRUE 时),则在 IF 关键字及其条件之后执行 Transact-SQL 语句。可选的 ELSE 关键字引入备用的 Transact-SQL 语句,当不满足 IF 条件时(布尔表达式返回 FALSE),就执行这个语句。
语法
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
参数
Boolean_expression
是返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。
{sql_statement | statement_block}
Transact-SQL 语句或用语句块定义的语句分组。除非使用语句块,否则 IF 或 ELSE 条件只能影响一个 Transact-SQL 语句的性能。若要定义语句块,请使用控制流关键字 BEGIN 和 END。如果在 IF...ELSE 块的 IF 区和 ELSE 区都使用了 CREATE TABLE 语句或 SELECT INTO 语句,那么 CREATE TABLE 语句或 SELECT INTO 语句必须指向是相同的表名。
注释
IF...ELSE 结构可以用在批处理中,存储过程中(经常使用这种结构测试是否存在着某个参数),以及特殊查询中。
可以在其它 IF 之后或在 ELSE 下面,嵌套另一个 IF 测试。对于嵌套层数没有限制。
示例
A. 使用一个 IF...ELSE 块
下面的示例显示带有语句块的 IF 条件。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15.
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
下面是结果集:
The following titles are excellent mod_cook books:
Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. 使用多个 IF...ELSE 块
下面的示例使用了两个 IF 块。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15。如果现代烹调书的平均价格高于 $15,则显示现代烹调书价格昂贵的语句。
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
答案补充 (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
这句本身就是 BOOL类型,你也可以换成一个参数呀.
在执行 Transact-SQL 语句时强加条件。如果条件满足(布尔表达式返回 TRUE 时),则在 IF 关键字及其条件之后执行 Transact-SQL 语句。可选的 ELSE 关键字引入备用的 Transact-SQL 语句,当不满足 IF 条件时(布尔表达式返回 FALSE),就执行这个语句。
语法
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
参数
Boolean_expression
是返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。
{sql_statement | statement_block}
Transact-SQL 语句或用语句块定义的语句分组。除非使用语句块,否则 IF 或 ELSE 条件只能影响一个 Transact-SQL 语句的性能。若要定义语句块,请使用控制流关键字 BEGIN 和 END。如果在 IF...ELSE 块的 IF 区和 ELSE 区都使用了 CREATE TABLE 语句或 SELECT INTO 语句,那么 CREATE TABLE 语句或 SELECT INTO 语句必须指向是相同的表名。
注释
IF...ELSE 结构可以用在批处理中,存储过程中(经常使用这种结构测试是否存在着某个参数),以及特殊查询中。
可以在其它 IF 之后或在 ELSE 下面,嵌套另一个 IF 测试。对于嵌套层数没有限制。
示例
A. 使用一个 IF...ELSE 块
下面的示例显示带有语句块的 IF 条件。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15.
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
下面是结果集:
The following titles are excellent mod_cook books:
Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. 使用多个 IF...ELSE 块
下面的示例使用了两个 IF 块。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15。如果现代烹调书的平均价格高于 $15,则显示现代烹调书价格昂贵的语句。
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
答案补充 (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
这句本身就是 BOOL类型,你也可以换成一个参数呀.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询