ホームページ  >  記事  >  データベース  >  SQLでのcaseの使用法

SQLでのcaseの使用法

angryTom
angryTomオリジナル
2020-02-13 16:35:0422494ブラウズ

SQLでのcaseの使用法

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 &#39;其他&#39; end</span>

これら 2 つの方法で同じ機能を実現できます。シンプルケース関数は比較的簡単に記述できますが、ケース検索関数に比べて述語の記述など機能に制限があります。 (無料の学習ビデオ チュートリアルの推奨: mysql ビデオ チュートリアル)

注意が必要な別の問題があります。case 関数は最初の修飾された値のみを返し、残りの case 部分は自動的に無視されます。 。

たとえば、次の SQL では、「2 番目のタイプ」の結果を取得することはできません。

case when col_1 in (&#39;a&#39;,&#39;b&#39;) then &#39;第一类&#39;
     when col_1 in (&#39;a&#39;) then &#39;第二类&#39;
     else &#39;其他&#39; 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 &#39;男&#39;
      when 2 then &#39;女&#39;
      else &#39;空的&#39;
      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 &#39;男&#39;
      when 2 then &#39;女&#39;
      else &#39;空的&#39;
      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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。