CASE式における文字データの例: 例2 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/tpt1555966086716.ditamap
dita:ditavalPath
ja-JP/tpt1555966086716.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

次の問合わせの結果は、5354エラー(引数はKANJI1タイプでなければならない)になります。これは、あるTHEN/ELSE式がKANJI1リテラルであり、その他のすべてのTHEN/ELSE式のサーバー文字セットがKANJI1ではないためです。

   SELECT i, CASE
               WHEN i=1 THEN column_l
               WHEN i=2 THEN column_u
               WHEN i=3 THEN column_j
               WHEN i=4 THEN column_g
               WHEN i=5 THEN _Kanji1'4142'XC
               ELSE column_k
             END
   FROM table_1
   ORDER BY 1;

この例では、以下のテーブル定義があるものとします。

   CREATE table_1
     (i        INTEGER,
      column_l CHARACTER(10) CHARACTER SET LATIN,
      column_u CHARACTER(10) CHARACTER SET UNICODE,
      column_j CHARACTER(10) CHARACTER SET KANJISJIS,
      column_g CHARACTER(10) CHARACTER SET GRAPHIC,
      column_k CHARACTER(10) CHARACTER SET KANJI1);

次の問合わせは、サーバー文字セットがGRAPHICであるため(文字タイプを持つ最初のTHENのサーバー文字セットがGRAPHICであるため)に失敗します。

   SELECT i, CASE
               WHEN i=1 THEN 4
               WHEN i=2 THEN column_g
               WHEN i=3 THEN 5
               WHEN i=4 THEN column_l
               WHEN i=5 THEN column_k
               ELSE 10
             END
   FROM table_1
   ORDER BY 1;