SQL での case の使用
case には 2 つの形式があります。簡易症例機能と症例検索機能。
1. 単純ケース関数
case sex when '1' then '男' when '2' then '女’ else '其他' end
2. ケース検索関数
case when sex = '1' then '男' when sex = '2' then '女' else '其他' end</span>
これら 2 つの方法で同じ機能を実現できます。シンプルケース関数は比較的簡単に記述できますが、ケース検索関数に比べて述語の記述など機能に制限があります。 (無料の学習ビデオ チュートリアルの推奨: mysql ビデオ チュートリアル)
注意が必要な別の問題があります。case 関数は最初の修飾された値のみを返し、残りの case 部分は自動的に無視されます。 。
たとえば、次の SQL では、「2 番目のタイプ」の結果を取得することはできません。
case when col_1 in ('a','b') then '第一类' when col_1 in ('a') then '第二类' else '其他' end
デモの例:
最初に、There を含む users テーブルを作成します。 id、name、性別の3つのフィールドです テーブルの内容は次のとおりです:
select * from users ID NAME SEX ---------- -------------------- ---------- 1 张一 2 张二 1 3 张三 4 张四 5 张五 2 6 张六 1 7 张七 2 8 张八 1
1. 上記の表の結果の「性別」をコードで表現しています コードで表現できれば幸いです中国語で。ステートメント内で case ステートメントを使用できます:
select u.id,u.name,u.sex, (case u.sex when 1 then '男' when 2 then '女' else '空的' end )性别 from users u; ID NAME SEX 性别 --------------------------------------- -------------------- ---------- ------ 1 张一 空的 2 张二 1 男 3 张三 空的 4 张四 空的 5 张五 2 女 6 张六 1 男 7 张七 2 女 8 张八 1 男
2. 「性別」列をリストに表示したくない場合、ステートメントは次のようになります:
select u.id,u.name, (case u.sex when 1 then '男' when 2 then '女' else '空的' end )性别 from users u; ID NAME 性别 --------------------------------------- -------------------- ------ 1 张一 空的 2 张二 男 3 张三 空的 4 张四 空的 5 张五 女 6 张六 男 7 张七 女 8 张八 男
3.合計とケースを組み合わせて、分割セグメント統計を取得します。
上記の表内のさまざまな性別の人の数を数えたい場合、SQL ステートメントは次のようになります:
select sum(case u.sex when 1 then 1 else 0 end)男性, sum(case u.sex when 2 then 1 else 0 end)女性, sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性别为空 from users u; 男性 女性 性别为空 ---------- ---------- ---------- 3 2 0 -------------------------------------------------------------------------------- SQL> select count(case when u.sex=1 then 1 end)男性, count(case when u.sex=2 then 1 end)女, count(case when u.sex <>1 and u.sex<>2 then 1 end)性别为空 from users u; 男性 女 性别为空 ---------- ---------- ---------- 3 2 0
以上がSQLでのcaseの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。