在oracle sql語句里有沒有if
oracle 中if ..else 可以再pl/sql 中使用,如果是要在SQL語句中達到這種效果可以用case when 。
then 。else ..end;mysql數據庫中CASE WHEN語句。
case when語句,用于計算條件列表并返回多個可能結果表達式之一。CASE 具有兩種格式:簡單 CASE 函數將某個表達式與一組簡單表達式進行比較以確定結果。
CASE 搜索函數計算一組布爾表達式以確定結果。 兩種格式都支持可選的 ELSE 參數。
語法簡單 CASE 函數:復制代碼 代碼如下:CASE input_expressionWHEN when_expression THEN result_expression[ 。n ][ELSE else_result_expressionENDCASE 搜索函數:復制代碼 代碼如下:CASE WHEN Boolean_expression THEN result_expression[ 。
n ][ELSE else_result_expressionEND參數input_expression是使用簡單 CASE 格式時所計算的表達式。Input_expression 是任何有效的 Microsoft? SQL Server? 表達式。
WHEN when_expression使用簡單 CASE 格式時 input_expression 所比較的簡單表達式。When_expression 是任意有效的 SQL Server 表達式。
Input_expression 和每個 when_expression 的數據類型必須相同,或者是隱性轉換。占位符,表明可以使用多個 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。
THEN result_expression當 input_expression = when_expression 取值為 TRUE,或者 Boolean_expression 取值為 TRUE 時返回的表達式。result expression 是任意有效的 SQL Server 表達式。
ELSE else_result_expression當比較運算取值不為 TRUE 時返回的表達式。如果省略此參數并且比較運算取值不為 TRUE,CASE 將返回 NULL 值。
Else_result_expression 是任意有效的 SQL Server 表達式。Else_result_expression 和所有 result_expression 的數據類型必須相同,或者必須是隱性轉換。
WHEN Boolean_expression使用 CASE 搜索格式時所計算的布爾表達式。Boolean_expression 是任意有效的布爾表達式。
結果類型從 result_expressions 和可選 else_result_expression 的類型集合中返回最高的優先規則類型。有關更多信息,請參見數據類型的優先順序。
結果值簡單 CASE 函數:計算 input_expression,然后按指定順序對每個 WHEN 子句的 input_expression = when_expression 進行計算。返回第一個取值為 TRUE 的 (input_expression = when_expression) 的 result_expression。
如果沒有取值為 TRUE 的 input_expression = when_expression,則當指定 ELSE 子句時 SQL Server 將返回 else_result_expression;若沒有指定 ELSE 子句,則返回 NULL 值。 CASE 搜索函數:按指定順序為每個 WHEN 子句的 Boolean_expression 求值。
返回第一個取值為 TRUE 的 Boolean_expression 的 result_expression。如果沒有取值為 TRUE 的 Boolean_expression,則當指定 ELSE 子句時 SQL Server 將返回 else_result_expression;若沒有指定 ELSE 子句,則返回 NULL 值。
下面分享一些mysql case when語句的例子。A. 使用帶有簡單 CASE 函數的 SELECT 語句在 SELECT 語句中,簡單 CASE 函數僅檢查是否相等,而不進行其它比較。
例子,使用 CASE 函數更改圖書分類顯示。復制代碼 代碼如下:USE pubsGOSELECT Category =CASE typeWHEN 'popular_comp' THEN 'Popular Computing'WHEN 'mod_cook' THEN 'Modern Cooking'WHEN 'business' THEN 'Business'WHEN 'psychology' THEN 'Psychology'WHEN 'trad_cook' THEN 'Traditional Cooking'ELSE 'Not yet categorized'END,CAST(title AS varchar(25)) AS 'Shortened Title',price AS PriceFROM titlesWHERE price IS NOT NULLORDER BY type, priceCOMPUTE AVG(price) BY typeGO注釋,后來我試了一下不讓用category=。
我使用的代碼為:復制代碼 代碼如下:SELECTcase genderWHEN 1 THEN 'NAN'WHEN 0 THEN 'NV'end as genderFROMt_swidy_day_nutrient結果集:Category Shortened Title Price ------------------- ------------------------- -------------------------- Business You Can Combat Computer S 2.99 Business Cooking with Computers: S 11.95 Business The Busy Executive's Data 19.99 Business Straight Talk About Compu 19.99 avg==========================13.73 Category Shortened Title Price ------------------- ------------------------- -------------------------- Modern Cooking The Gourmet Microwave 2.99 Modern Cooking Silicon Valley Gastronomi 19.99 avg==========================11.49 Category Shortened Title Price ------------------- ------------------------- -------------------------- Popular Computing Secrets of Silicon Valley 20.00 Popular Computing But Is It User Friendly? 22.95 avg==========================21.48 Category Shortened Title Price ------------------- ------------------------- -------------------------- Psychology Life Without Fear 7.00 Psychology Emotional Security: A New 7.99 Psychology Is Anger the Enemy? 10.95 Psychology Prolonged 。
pl/sql if then語法
會不會是你 那個條件里面, 有括號沒有合上啊? SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 100; 5 6 IF testvalue > 100 THEN 7 dbms_*_line( '100+' ); 8 ELSIF testvalue = 100 THEN 9 dbms_*_line( '100' ); 10 ELSE 11 dbms_*_line( '100-' ); 12 END IF; 13 14 END; 15 /100PL/SQL procedure successfully completed。
.。
執行完一段SQL語句后,"if sql%notfound then"表示什么意思
sql是系統自動創建隱式游標
隱式游標自動聲明、打開和關閉,其名為 SQL
通過檢查隱式游標的屬性可以獲得最近執行的DML 語句的信息
隱式游標的屬性有:
SQL%FOUND – SQL 語句影響了一行或多行時為 TRUE
SQL%NOTFOUND – SQL 語句沒有影響任何行時為TRUE
SQL%ROWCOUNT – SQL 語句影響的行數
SQL%ISOPEN - 游標是否打開,始終為FALSE
ORACLE sql 里面可以用if 語句嗎
insert 語句中值的順序如果和表結構一致可以省略列名列表。
這個SQL的意思沒看懂,我給分析一下看對不對,你是不是想表達這個意思:如果在yangao這個表中存在age3=4的數據,那么,就向yangao中插入一行數據,行數據的內容是(4,NULL,1).如果是這樣的話,那么IF用的是不對的。在SQL里面條件的關鍵字是WHERE。
insert into yangao values(4,NULL,1) where exists (select * from yangao where(AGE3=4)); commit;但如果你想表達的是:在yangao表中插入一條數據,如果存在(select * from yangao where(AGE3=4)) 這樣的數據就提交的話,那么應該這么寫: insert into yangao values (4, NULL, 1); select count(*) into n_count from yangao where (AGE3 = 4); if n_count > 0 then commit; end if;。
sql中if then的使用
if 后面沒then
引用sql聯機叢書
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 } ]
另外你這個觸發器能執行?
set @q = *view_id
while(*view_id!=MAX(filmreview_id))
這兩行我怎么看都不符合sql語法啊
Oracle if 語句問題
oracle跟sqlserver不同
if 后 then就可以
而sqlserver中
if 后不跟then ,而是跟begin 。.end;
所以你第一個是對的,第二個應該會報錯的
同時update后需要commit;這個lz需要注意一下,否則只在當前會話中update生效,重新再開一個會話還會發現數據沒寫進去
還有,你select 。into那句,xx必須只能是一個值,不能是一列里N多條記錄,否則一個變量不能存放N條數據,如果這種情況得需要用游標來處理
oracle if then
EXIT語句必須出現在一個循環中,用于退出循環,下面是一個例子,可以看下 SQL> DECLARE 2 x NUMBER := 0; 3 BEGIN 4 LOOP 5 DBMS_*_LINE 6 ('Inside loop: x = ' || TO_CHAR(x)); 7 8 x := x + 1; 9 10 IF x > 3 THEN 11 EXIT; 12 END IF; 13 END LOOP; 14 -- After EXIT, control resumes here 15 16 DBMS_*_LINE 17 (' After loop: x = ' || TO_CHAR(x)); 18 END; 19 /Inside loop: x = 0Inside loop: x = 1Inside loop: x = 2Inside loop: x = 3After loop: x = 4 PL/SQL procedure successfully completed. SQL>。
oracle中簡單if用法的問題
pl/sql的代碼一般都是寫在過程,函數和觸發器中,你寫的話要注意,單寫一段也沒有什么問題
pl/sql的select語句要有東西接住查詢出來的值。這是與sql不同的地方:
DECLARE
v_tmp VARCHAR2(100);
BEGIN
IF 1=1 THEN
SELECT 1 INTO v_tmp FROM DUAL;
dbms_*_line(v_tmp);
END IF;
END;
轉載請注明出處華閱文章網 » oraclesql語句ifthen