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