mysql如何做if判斷 MySQL使用if判斷

2021-10-25 14:31:02 字數 2455 閱讀 1817

select *,if(sva=1,"男","女") as ssva from taname where sva<>""

12.2. 控制流程函式

case value when [compare-value] then result [when [compare-value] then result ...] [else result] end case when [condition] then result [when [condition] then result ...] [else result] end

在第乙個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為else後的結果,如果沒有else 部分,則返回值為 null。

mysql> select case 1 when 1 then one

->     when 2 then two else more end;

-> one

mysql> select case when 1>0 then true else false end;

-> true

mysql> select case binary b

->     when a then 1 when b then 2 end;

-> null

乙個case表示式的預設返回值型別是任何返回值的相容集合型別,但具體情況視其所在語境而定。如果用在字串語境中,則返回結果味字串。如果用在數字語境中,則返回結果為十進位制值、實值或整數值。

if(expr1,expr2,expr3)

如果 expr1 是true (expr1 <> 0 and expr1 <> null),則 if()的返回值為expr2; 否則返回值則為 expr3。if() 的返回值為數字值或字串值,具體情況視其所在語境而定。

mysql> select if(1>2,2,3);

-> 3

mysql> select if(1<2,yes ,no);

-> yes

mysql> select if(strcmp(test,test1),no,yes);

-> no

如果expr2 或expr3中只有乙個明確是 null,則if() 函式的結果型別 為非null表示式的結果型別。

expr1 作為乙個整數值進行計算,就是說,假如你正在驗證浮點值或字串值,   那麼應該使用比較運算進行檢驗。

mysql> select if(0.1,1,0);

-> 0

mysql> select if(0.1<>0,1,0);

-> 1

在所示的第乙個例子中,if(0.1)的返回值為0,原因是 0.1 被轉化為整數值,從而引起乙個對 if(0)的檢驗。這或許不是你想要的情況。在第二個例子中,比較檢驗了原始浮點值,目的是為了了解是否其為非零值。比較結果使用整數。

if() (這一點在其被儲存到臨時表時很重要 ) 的預設返回值型別按照以下方式計算:

表示式返回值

expr2 或expr3 返回值為乙個字串。

字串expr2 或expr3 返回值為乙個浮點值。

浮點expr2 或 expr3 返回值為乙個整數。

整數假如expr2 和expr3 都是字串,且其中任何乙個字串區分大小寫,則返回結果是區分大小寫。

ifnull(expr1,expr2)

假如expr1 不為 null,則 ifnull() 的返回值為 expr1; 否則其返回值為 expr2。ifnull()的返回值是數字或是字串,具體情況取決於其所使用的語境。

mysql> select ifnull(1,0);

-> 1

mysql> select ifnull(null,10);

-> 10

mysql> select ifnull(1/0,10);

-> 10

mysql> select ifnull(1/0,yes);

-> yes

ifnull(expr1,expr2)的預設結果值為兩個表示式中更加「通用」的乙個,順序為string、 real或 integer。假設乙個基於表示式的表的情況,  或mysql必須在記憶體儲器中儲存乙個臨時表中ifnull()的返回值:

create table tmp select ifnull(1,test) as test;

在這個例子中,測試列的型別為 char(4)。

nullif(expr1,expr2)

如果expr1 = expr2  成立,那麼返回值為null,否則返回值為 expr1。這和case when expr1 = expr2 then null else expr1 end相同。

mysql> select nullif(1,1);

-> null

mysql> select nullif(1,2);

-> 1

注意,如果引數不相等,則 mysql 兩次求得的值為  expr1

mysql如何做直播 乙個新手如何做直播

主播行業這幾年發展的是風生水起了,很多人想要從主播這個職業裡面獲得一定的收入。剛開始進駐的主播,無論是顏值主播還是遊戲主播確實都賺到錢了,月入萬元,年入百萬的主播不在少數。導致很多人都覺得只要做主播就能賺到錢,甚至覺得只要自己願意當主播年薪百萬唾手可得。所以瘋狂的購買直播裝置,各種找公會,開播幾個月...

如何做研究

來自 在研究生期間,一開始大家都很迷惑,都不知道自己要幹什麼 該幹什麼?即便知道自己要幹什麼,也不知道從哪幹起?上次兩位老師跟我們交流了一下,下面是他們的心得 給乙個專案 解決方案 問題分塊 任務明細 一開始並不是所有的問題都會想到,但是起碼要有乙個大體的框架在心中,然後細化模組,對每乙個功能進行細...

如何做專案

1,以業務規則為綱,而不是業務實體 2,在思考和設計業務規則的時候,以業務核心為綱,什麼是業務核心,定義為,當前你最關注的,當前最不確定的那一部分。所以我現在不喜歡領域驅動,我喜歡業務驅動 其實可能二者是一碼事 那麼我這裡所說的業務驅動要怎麼驅動法呢?就先以上面兩條為起頭,然後再來說,業務規則,以找...