MySQL的CASE WHEN怎麼用

2022-12-08 14:45:16 字數 3686 閱讀 9943

1樓:匿名使用者

如果沒有匹配的結果值,則返回結果為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表示式的預設返回值型別是任何返回值的相容集合型別,但具體情況視其所在語境而定。如果用在字串語境中,則返回結果味字串。如果用在數字語境中,則返回結果為十進位制值、實值或整數值。

2樓:匿名使用者

去這個地方看看就明白了:

我已經過了。

mysql的case when語句

3樓:帳號已登出

case when的兩種寫法。

簡單判斷:要判斷值的列寫在case後面,when後面寫值,相等的情況執行then後的語句,可以寫多個when判斷語句,都不滿足返回else後的值,要以end結尾,end後面可以給該列指定列名。

case [col_name]

when [value1] then [result1]when [value1] then [result2]else [default]

end [new_col_name]

表示式判斷:

case開頭,when後面寫表示式,表示式為真則執行then後的語句,可以寫多個when判斷表示式,都不滿足的情況下返回else後的值,以end結尾,end後可以為該列指定列名。

casewhen [expr] then [result1]when [expr] then [result2]else [default]

end [new_col_name]

mysql case when的判斷問題

4樓:莫路草根

select id,(case status

when '1' then '正常賬號'

when '2' then '已凍結'

when '3' then '已登出'

end) as `status` from tablecase then 的正確用法,當status = 1時,查詢出來的資料填充內容:正常賬號;當status=2時,……這樣寫你就不會感覺到迷惑了。

mysql更新語句的case when 和 where的結合

5樓:她是我的小太陽

直接加在語句最後就行了。

update `member` set score = case when score is not null then score = 0 else score = 1 end) where id =1;

mysql資料庫中case when語句。

case when語句,用於計算條件列表並返回多個可能結果表示式之一。

case 具有兩種格式:

簡單 case 函式將某個表示式與一組簡單表示式進行比較以確定結果。

case 搜尋函式計算一組布林表示式以確定結果。

兩種格式都支援可選的 else 引數。

6樓:匿名使用者

update `member` set score = case when score is not null then score = 0 else score = 1 end) where id =1;

直接加在語句最後就行了。

用mysql寫一個 case when的自定義函式要怎麼寫

7樓:匿名使用者

mysql> create function helloworld4()

-> returns varchar(20)->begin

-> return 'hello world!';

-> end;

query ok, 0 rows affected ( sec)

mysql> select helloworld4()

| helloworld4()

| hello world! |

1 row in set ( sec)如果你會其它資料庫的話, 那麼看看那個 sql 儲存過程編寫 參考手冊 對你會有些幫助。

mysql的case when 問題

mysql case when 碰上中文字串

8樓:匿名使用者

恩。。。感覺不大對呢。

小名,2014,null,[email protected],123-456-789

是在一個欄位裡吧,按照你下面的寫法,好像是放到了很多的欄位裡,你確定這個是你要的?

你用group_concat函式試試,應該能達到你上面的需求。(就是沒有null)

至於你上面的問題,你的語句去掉group查出來的結果應該是。

1000 小名 null null null null null

1000 null 2014 null null null null

你在group聚合的時候,沒有指令上面的欄位和下面的欄位用什麼方式結合,就是說「小名+null」用什麼方式結合,也就是說在case when的外層少了一個聚合函式,不過按照這個寫法,這個聚合函式是什麼我還真不清楚,因為不管怎麼聚和每個欄位都會出現一堆的null,跟你的要求不符。

比較簡單的解決辦法,個人建議補齊1-6,沒有就寫null,這樣查詢的話用group_concat就行。

如果不加,個人感覺就比較麻煩了。

先用null合併,就是不加單引號的null,聚合後在顯示的時候用上ifnull

mysql的case when語句轉oracle

9樓:匿名使用者

oracle也有case when的語法,照辦就行,不過用在where條件中,需要有返回值的比較。

where = asdf' and (

casewhen ( like '%0%')then true

when ( like '%1%')and = #code# then true

when ( like '%2%')and ( #dept# and #flag# = 1) then true

else false

end) =true

這是按照我的業務理解寫的。

where = asdf' and (

casewhen ( like '%0%')then 1

when ( like '%1%')and = #code# then 2

when ( like '%2%')and ( #dept# and #flag# = 1) then 3

else 4

end) =1 --根據反回結果來過濾資料)

10樓:匿名使用者

- -不知道你說啥 = #dept# and #flag# = 1 能對麼。。。

mysql中的root賬戶不小心刪除了,怎麼恢復root使用者

關掉mysql服務,找到另外一臺機器上沒有刪除root的data資料夾,data下面mysql資料夾user.frm,user.myd,user.myi三個檔案,覆蓋到同樣data資料夾就好了 重新啟動 root正常登入 求助!mysql 5.1誤刪除root使用者 靠,重新建立一個有管理許可權的使...

mysql索引用的什麼樹,mysql索引的資料結構,為什麼用b 樹

先從資料結構的角度來答。題主應該知道b 樹和b 樹最重要的一個區別就是b 樹只有葉節點存放資料,其餘節點用來索引,而b 樹是每個索引節點都會有data域。這就決定了b 樹更適合用來儲存外部資料,也就是所謂的磁碟資料。mysql索引的資料結構,為什麼用b 樹 先從資料結構的角度來答。題主應該知道b 樹...

mysql有不用安裝就能用的嗎,mysql空間不需要安裝mysql嗎

access轉成sql 理論上可行,但是筆者修改的程式只能成功幾個 網上大部分的免費asp程式使用的是access資料庫。但是access資料庫作為一箇中小型的單機資料庫系統,在承擔訪問量 資料量大的 應用時,往往就不堪重負了。一般認為,超過50m的access資料庫效能就開始明顯下降,超過100m...