sql判断语句
A. sql语句中能否含有if....else...判断语句
SQL中没有ifif....else...判断语句,但有case…语句,而且是所有数据库都支持的。
拓展资料:
程序中用法如下:
1、oracle和mysql数据库都可以这样写CASE WHEN (RO.APPROVE_QUANTITY - NVL(tto.QUANTITY , 0 )) < 0 THEN 0 ELSE (RO.APPROVE_QUANTITY-NVL(tto.QUANTITY , 0 )) END surplusQuantity.
2、注意:NVL()是oracle数据库中对字段的非空校验,如果字段名为空,则赋值为逗号后面的值。
3、mysql中还有一种if...else的方法if(表达式, 表达式成立的值, 表达式不成立的值)
ifnull("字段名", 值) -- 非空验证。
B. sql语句中if判断条件怎么写
sql语句中if判断条件是结合select语句使用的。IF函数也能通过判断条件来返回特定值,它的语法如下:IF(expr,result_true,result_false)。
expr是一个条件表达式,如果结果为true,则返回result_true,否则返回result_false。在一些场景中,IF函数和CASE WHEN是有同样效果的,前者相对简单,后者能应对更复杂的判断。另外,IF函数还可以和聚合函数结合。
SQL其他情况简介。
SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
C. SQL 插入判断语句
--以产品表为例,有产品id为'新id',判断是update还是insert
--思路1:执行update语句,如果受影响行数为0,就执行insert
update 产品表
set 产品id = '新id'
where 产品id = '新id'
if @@rowcount = 0
begin
insert into 产品表(产品id) values('新id')
end
--思路2:先执行select语句查是否有数据,有就update,没有就insert
declare @row int
select @row = count(*) from 产品表 where 产品id = '新id'
if @row > 0
begin
update 产品表
set 产品id = '新id'
where 产品id = '新id'
end
else
begin
insert into 产品表(产品id) values('新id')
end
----
case 是一个函数,所以case只能使用在DML语句中,而不能用作执行update,insert等语句
D. sql条件判断语句
SELECT*
FROMISSUEBOND_INFOA,ISSUE_REMARK_INFOB
WHERE(B.REMARKNO<>'08'AND
B.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO))
OR(B.REMARKNO='08'AND
B.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO));
这两条判断就是一个
SELECT*
FROMISSUEBOND_INFOA,ISSUE_REMARK_INFOB
WHEREB.REMARK_AMT<(SELECTSUM(A1.NOTIONAL_AMT)
FROMISSUEBOND_INFOA1
WHEREA1.ISSUE_DATE<A.ISSUE_DATE
ANDA1.REMARK_NO=A.REMARK_NO);
E. SQL中的判断语句
select
(case
when
b=c
then
a
else
b
end)
from
A
F. sql if语句判断
这个有点模糊,2个表没有主外键关系吗? 那怎么比用A中哪条记录的shi值和B中哪条记录的shi值比? 如果是A查出一条记录的shl和B中查出一条记录的shl比,你可以写个存储过程,把2条记录查出的shl分别赋值给2个变量,然后再写if判断
G. SQL语句如何实现判断
LZ太懒,都不思考
declare @count int
set @count = (select count(*) from hrm_staff) --获得第一句查到的行数
if @count > 0 ---第一张表如果没有记录整个语句结束,这时候会显示结果:命令已成功完成。
begin
set @count = (select count(*) from bss_id) --获得第二句查到的行数
if @count = 0 ---如果第二张表里有数据,整个语句结束,显示结果:命令已成功完成。
begin
select * from cmn_attend_set --执行第三句
end
end
--只有当第一张表有数据,第二张表没有数据的时候才执行第三句,所以要根据实际情况写if
--而不是直接拿来用
H. 求sql判断语句(回答好加50分)
用存储过程编写
该存储过程接受俩个参数,一个name,一个password
create proc check_user
@name nvarchar(20),
@password nvarchar(20)
as
if exists(select * from user_table where name=@name and password=@password)
return 1
else
return 0
I. sql数据库有哪些判断语句
可以写存储过程或者触发器。那里有控制语句。和c的差不多。因为SQL是高度非过程化的 语言,不可能有IF的,只能用存储过程处理了。
CREATE PROCEDURE order_tot_amt
@o_id int,
@p_tot int output
AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE ordered=@o_id
GO
实例 设有两个表为Proct,Order_,其表内容如下: Proct
产品编号 产品名称 客户订数
001 钢笔 30
002 毛笔 50
003 铅笔 100
Order_
产品编号 客户名 客户订金
001 南山区 $30
002 罗湖区 $50
003 宝安区 $4
请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额, 总金额=订金*订数,临时表放在存储过程中 代码如下:
Create proc temp_sale
as
select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额
into #temptable from Proct a inner join Order_ b on a.产品编号=b.产品编号-----此处要用别名
if @@error=0
print 'Good'
else
print 'Fail'
go
J. sql 判断语句
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name