select語句中更改查詢結果 case when

2021-04-19 18:06:45 字數 1810 閱讀 6080

有時資料庫中為了儲存空間的節約,存了一些比較小的字段,這是可以在select語句中進行轉換。 在

select

語句中用條件語句:如果,資料庫中乙個字段

gender

來儲存性別,存的是

1/0兩個值,這時可以用

select

case

when

gender=1

then

'man'

else

'woman'

endas

[gender]

from

personinfo

sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if/else 語句。

case when condition

then result

[when ...]

[else result

]end

case 子句可以用於任何表示式可以有效存在的地方。 condition

是乙個返回boolean 的表示式。 如果結果為真,那麼 case 表示式的結果就是符合條件的 result

。 如果結果為假,那麼以相同方式搜尋任何隨後的 when 子句。 如果沒有 when

condition

為真,那麼 case 表示式的結果就是在 else 子句裡的值。 如果省略了 else 子句而且沒有匹配的條件, 結果為 null。

例子:

select * from test;

a---12

3select a,

case when a=1 then 'one'

when a=2 then 'two'

else 'other'

endfrom test;

a | case

---+-------

1 | one

2 | two

3 | other

所有 result

表示式的資料的型別都必須可以轉換成單一的輸出型別。

下面這個"簡單的"

case 表示式是上面的通用形式的乙個特殊的變種。

case expression

when value

then result

[when ...]

[else result

]end

先計算 expression

的值, 然後與所有在when 子句裡宣告的 value

對比,直到找到乙個相等的。 如果沒有找到匹配的,則返回在 else 子句裡的 result

(或者 null)。 這個類似於 c 裡的switch語句。

上面的例子可以用簡單 case 語法來寫:

select a,

case a when 1 then 'one'

when 2 then 'two'

else 'other'

endfrom test;

a | case

---+-------

1 | one

2 | two

3 | other

case 表示式並不計算任何對於判斷結果並不需要的子表示式。 比如,下面是乙個可以避免被零除的方法:

sql查詢語句中

sql查詢語句中select t.status,t.rowid from person t where t.status 2,此處查詢的是status不等於2的記錄,並過濾掉status為null的記錄。注意 此處不管status是integer型別還是long型別,都會過濾掉status為null...

mysql的select語句中in的用法是什麼

在mysql中,select語句內in常用於where表示式中,其作用是查詢某個範圍內的資料,in查詢的範圍資料並不一定是明確的,可能會包含子查詢語句,語法為 select from where.in 範圍資料或者子查詢語句 本教程操作環境 windows10系統 mysql8.0.22版本 del...

sql語句中限制結果集行數

sql語句中限制結果集行數 在進行資料檢索的時候有時候需要只檢索結果集中的部分行,比如說 檢索成績排前三 名的學生 檢索工資水平排在第3位到第7位的員工資訊 這種功能被稱為 限制結果集 行數 在雖然主流的資料庫系統中都提供了限制結果集行數的方法,但是無論是語法還是 使用方式都存在著很大的差異,即使是...