當前位置:首頁 » 編程語言 » sql判斷語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql判斷語句

發布時間: 2022-01-12 22:42:21

1. 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等語句

2. 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

3. sql語句中if判斷條件怎麼寫

sql語句中if判斷條件是結合select語句使用的。IF函數也能通過判斷條件來返回特定值,它的語法如下:IF(expr,result_true,result_false)。

expr是一個條件表達式,如果結果為true,則返回result_true,否則返回result_false。在一些場景中,IF函數和CASE WHEN是有同樣效果的,前者相對簡單,後者能應對更復雜的判斷。另外,IF函數還可以和聚合函數結合。

SQL其他情況簡介。

SQL是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。

4. 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("欄位名", 值) -- 非空驗證。

5. sql if語句判斷

這個有點模糊,2個表沒有主外鍵關系嗎? 那怎麼比用A中哪條記錄的shi值和B中哪條記錄的shi值比? 如果是A查出一條記錄的shl和B中查出一條記錄的shl比,你可以寫個存儲過程,把2條記錄查出的shl分別賦值給2個變數,然後再寫if判斷

6. SQL中的判斷語句

select
(case
when
b=c
then
a
else
b
end)
from
A

7. 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);

8. sql 判斷語句

select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name

9. 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
--而不是直接拿來用

10. 求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