Oracle SQL 之條件表示式

2021-08-31 21:36:43 字數 2314 閱讀 8786

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

在oracle中,我們有兩種方式可以實現if-then-else的邏輯:case  語句 或者 decode 函式

相比較來說decode 函式會更加的簡潔。

我們在oracle資料庫中建立乙個user_info表:

create

table user_info(user_id number(2) primary

key,        user_name varchar2(14),       user_age number(4),        user_birthday date);

我們可以看到其中有 使用者id主鍵,使用者姓名,使用者年齡,以及使用者生日。

[ 第一題 ]

查詢所有使用者的資訊,我們增加乙個額外的顯示字段age_type,將年齡小於20的設定為a,年齡在20到30之間的設定為b,大於30的設定為c。

[ 第二題 ]查詢員工資訊,增加乙個額外的字段user_type,如果是張三則顯示為主管,如果是李四則顯示為經理,其他顯示為員工

select u.user_id,       u.user_name,       case u.user_name         when

'張三'

then

'主管'

when

'李四'

then

'經理'

else

'員工'

我們將上面的的兩題使用decode 函式再寫一遍,**如下:

[ 第一題 ]

select u.user_id,       u.user_name,       u.user_age,       decode(trunc(u.user_age/10),       1, 'a',       2, 'b',        'c') age_type,       u.user_birthday  from user_info u;
[ 第二題 ]

select u.user_id,       u.user_name,       u.user_age,       decode(u.user_name,       '張三', '主管',       '李四', '經理',        '員工') user_type,       u.user_birthday  from user_info u;
注:如果只是判斷兩個數的大小,我們可以使用sign()函式

sign(n)函式:根據某個值n是0、正數、負數,分別返回0、1、-1

如題:

年齡小於25的設定為a,年齡大於25的設定為b,等於25的設定為 c:

select u.user_id,       u.user_name,       u.user_age,       decode(sign(u.user_age-25),       -1, 'a',       1, 'b',       'c') age_type,       u.user_birthday  from user_info u;
給我老師的人工智慧教程打call!

python基礎之條件表示式

分支語句 score 98if score 90 print 優秀 elif score 80 print 不錯 elif score 60 print 及格 else print 不及格 a input 請輸入乙個數字 input 函式,從鍵盤讀取使用者的輸入,a是返回值,是字串型別 ifnot ...

pgsql條件表示式

postgresql 8.1 中文文件 prev fast backward chapter 9.函式和操作符 fast forward next 本節描述在 postgresql 裡可以用的sql相容的條件表示式。sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if else 語...

Postgresql 條件表示式

postgresql中可用的sql相容的條件表示式。如果你的需求超過這些條件表示式的能力,你可能會希望用一種更富表現力的程式語言寫乙個儲存過程。sql case表示式是一種通用的條件表示式,類似於其它程式語言中的 if else 語句 case when condition then result ...