有時資料庫中為了儲存空間的節約,存了一些比較小的字段,這是可以在select語句中進行轉換。 在
select
語句中用條件語句:如果,資料庫中乙個字段
gender
來儲存性別,存的是
1/0兩個值,這時可以用
select
case
when
gender=1
then
'man'
else
'woman'
endas
[gender]
from
personinfo
sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if/else 語句。
case when conditioncase 子句可以用於任何表示式可以有效存在的地方。 conditionthen result
[when ...]
[else result
]end
是乙個返回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先計算 expressionwhen value
then result
[when ...]
[else result
]end
的值, 然後與所有在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位的員工資訊 這種功能被稱為 限制結果集 行數 在雖然主流的資料庫系統中都提供了限制結果集行數的方法,但是無論是語法還是 使用方式都存在著很大的差異,即使是...