SAP HANA データ型: 数値、文字列、小数
⚡ スマートサマリー
SAP HANAデータ型は、各列が格納できるものを定義し、日付時刻、数値、ブール値、文字列、バイナリ、ラージオブジェクト、および多値分類を網羅し、各マップping 特定の列ストアタイプへ。

この中の SAP HANA データ型チュートリアルでは、次のことを学習します。
1) SAP HANA データ型 – SAP HANA データ型には、日付時刻、数値データ型、ブール値、文字列、バイナリ データ型などが含まれます。
2) SAP HANA 識別子 – 区切られた識別子と区切られていない識別子
データ型 SAP HANA
In SAP HANAデータベース、 SQL データ型は以下のとおりです。
| 欠陥種類の識別 | 下位分類 | SQL データ型 | 列ストアのタイプ | デフォルト書式 |
|---|---|---|---|---|
| 日付と時刻のタイプ | 日付 | DATE | CS_DAYDATE | 「YYYY-MM-DD」 |
| 時間 | タイム | CS_SECONDTIME | 「HH24:MI:SS」 | |
| XNUMX番目の日付 | XNUMX回目 | CS_LONGDATE | 「YYYY-MM-DD HH24:MI:SS」 | |
| タイムスタンプ | タイムスタンプ | CS_SECONDDATE | 「YYYY-MM-DD HH24:MI:SS.FFn」 | |
| 数値型 | 小さな整数 | タイイント | CS_INT | 8ビット符号なし整数、範囲0~255 |
| 小さい整数 | 小型 | CS_INT | 16ビット符号付き整数、範囲 -32,768 ~ 32,767 | |
| 整数 | 整数 | CS_INT | 32ビット符号付き整数、範囲 -2,147,483,648 ~ 2,147,483,647 | |
| 大きな整数 | BIGINT | CS_FIXED(18,0) | 64ビット符号付き整数、範囲 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
| 10進数 | DECIMAL(p,s) p精度 Sスケール |
CS_FIXED(ps,s) | 精度 p の範囲は 1 ~ 38 です。 スケールsは0からpまでの範囲で、 SAP HANA 10 進データ型。 精度と位取りが指定されていない場合、DECIMAL は浮動小数点 XNUMX 進数になります。 |
|
| 小十進数 | 小十進数 | CS_SDFLOAT | これは浮動小数点の 1 進数です。 精度とスケールは、保存されている値に応じて、精度が 16 ~ 369、スケールが -368 ~ XNUMX の範囲内である必要があります。 SMALLDECIMAL は列ストア テーブルでのみサポートされます。 | |
| 実数 | リアル | CS_FLOAT | 単精度 32 ビット浮動小数点数 | |
| Double 数 | ダブル | CS_ダブル | 倍精度64ビット浮動小数点数 | |
| フロート | 浮動小数点(n) | CS_ダブル | これは32ビットまたは64ビットの実数です。nはビット数を指定し、1から53の範囲である必要があります。 | |
| ブーリアン | ブーリアン | ブーリアン | CS_INT | 真、偽、不明 (NULL)。 |
| 文字列 | 可変長文字列 | VARCHAR(n) | CS_STRING | この HANA 文字列長データ型は可変長文字列であり、'n' は最大長をバイト単位で指定するもので、1 から 5000 までの整数です。 |
| 可変長 Unicode 文字 | NVARCHAR(n) | CS_STRING | 可変長の Unicode 文字セット文字列。 文字数の最大長を示し、1 ~ 5000 の整数です。 | |
| 英数字 | アルファナム(n) | CS_ALPHANUM | 可変長の英数字。n は最大長を示し、1 ~ 127 の整数です。 | |
| 短いテキスト | 短いテキスト(n) | CS_STRING | これは可変長文字列であり、テキスト検索機能と文字列検索機能を提供します。このデータ型は列ストアテーブルには定義できますが、行テーブルには定義できません。 | |
| バイナリ型 | バイナリテキスト | VARBINARY(n) | CS_RAW | 指定された最大長のバイナリ データをバイト単位で保存します。n は最大長を示し、1 ~ 5000 の整数です。 |
| LOB タイプ (ラージ オブジェクト タイプ) | バイナリLOB | BLOB | CS_RAW | 大量のバイナリデータ |
| キャラクターLOB | CLOB | CS_STRING | ASCII文字データ | |
| Unicode 文字 LOB | NCLOB | CS_STRING | 大きな Unicode 文字オブジェクト | |
| TEXT | TEXT | CS_STRING | TEXT データ型はテキスト検索機能を提供します。 このデータ型は列ストア テーブルには定義できますが、行ストア テーブルには定義できません。 | |
| BINARYテキストデータ | バイテキスト | CS_STRING | BINTEXT データ型は TEXT データ型に似ているため、テキスト検索機能をサポートしますが、バイナリ データを挿入することができます。 このデータ型は列テーブルには定義できますが、行テーブルには定義できません。 | |
| 複数の値の型 | 配列 | アレイ | これは、各要素が XNUMX つの位置にのみ関連付けられている、同じデータ型の値のコレクションを格納します。 値が存在しない場合と同様に、配列には NULL 値を含めることができます。 |
正しい選択 SAP HANAデータ型
上記の表には利用可能なものが記載されています。適切な選択は、 SAP HANAはディスクベースのデータベースよりも効率的です。なぜなら、すべての列がメモリ上に存在し、サイズが大きすぎる型は各行で貴重なリソースを消費するからです。
ほとんどの決定は、以下の4つのルールで網羅されます。
- 収まる最小の数値型を選択してください。 5つの値を取り得るステータスフラグには、INTEGERではなくTINYINTが必要です。10億行のテーブルでは、その差はギガバイト単位のメモリ使用量に相当します。
- 現金は、現金でも二重現金でも保管してはいけません。 浮動小数点数は小数点以下の値を正確に表現できないため、合計値は通貨単位の小数点以下の値で変動します。精度とスケールを明示的に指定したDECIMAL型を使用してください。
- VARCHARよりもNVARCHARを推奨します。 VARCHARはバイト数をカウントし、NVARCHARは文字数をカウントするため、非ASCIIテキストはVARCHARでは予期せず切り捨てられます。 SAP HANAのリリースでは、まさにこの理由からVARCHARをNVARCHARとして扱います。
- 日付の精度を要件に合わせます。 日付を表す場合はDATE、時刻が重要な場合はSECONDDATE、そして秒以下の精度が本当に必要な場合はTIMESTAMPを使用します。各ステップを上位にするごとに、各行のストレージ容量が増加します。
大きなオブジェクト型には特に注意が必要です。BLOB または NCLOB 列は便利ですが、容量が大きく、TEXT または SHORTTEXT のテキスト検索は列ストアテーブルでのみ機能するため、ストレージの選択とデータ型の選択は関連しています。ストレージオプションについては、 SAP HANASQL について チュートリアル。
SAP HANA 識別子
識別子は名前を表すために使用されます。 SQL ステートメント (例: テーブル名、ビュー名、列名、インデックス名、シノニム名、プロシージャ名、関数名など)
識別子には XNUMX 種類あります SAP HANA: 区切り文字で区切られた識別子と区切り文字で区切られていない識別子。
- 区切られた識別子 – デリミタで囲まれており、 Double 「」を引用します。識別子には、特殊文字を含む任意の文字を含めることができます。
- 区切りのない識別子 – 区切られていない識別子 (テーブル名、列名) は文字で始まる必要があり、数字またはアンダースコア「_」以外の記号を含めることはできません。
区切り用の引用符は以下のXNUMX種類があります。
- 一重引用符 (' ') – 文字列を区切るために使用されます。
- Double クォーテーションマーク (" ")– 識別子の区切りに使用されます。
⚠️ 警告: 区切り文字のない識別子は、オブジェクト作成時に大文字に変換されます。例えば、employee という名前でテーブルを作成し、後で小文字の「employee」から選択しようとすると、保存されている名前が EMPLOYEE であるため失敗します。二重引用符は完全に避けるか、一貫して使用してください。
データ型変換とよくあるエラー
SAP HANAは互換性のある型間で自動的に変換を行いますが、暗黙的な型変換は、誤った結果やクエリの遅延を引き起こす隠れた原因となります。明示的な型変換は、意図を明確にします。
この処理は2つの関数によって行われます。CAST関数は値を指定された型に変換し、TO_DATE、TO_VARCHAR、TO_DECIMALおよびそれらの関連関数は、オプションの書式文字列を使用して変換します。
-- Explicit conversion with CAST SELECT CAST('1234' AS INTEGER) FROM DUMMY; -- Conversion with an explicit format SELECT TO_DATE('2026-07-21', 'YYYY-MM-DD') FROM DUMMY; -- Number to string with fixed decimals SELECT TO_DECIMAL(1234.5678, 10, 2) FROM DUMMY;
変換問題のほとんどは、以下の4つのエラーが原因です。
- 数値オーバーフロー。 SMALLINT型に40000を挿入しようとすると、符号付き範囲が32,767で止まるため失敗します。メッセージには値ではなく列名が表示されているため、まず定義を確認してください。
- 文字列の切り捨て。 宣言された長さを超えるテキストを読み込むと、自動的に切り捨てられるのではなく、エラーが発生します。NVARCHAR型の場合は文字数を、VARCHAR型の場合はバイト数をカウントします。
- 日付形式が無効です。 TO_DATE 関数に誤ったパターンの文字列を渡すと失敗します。セッションのデフォルト値に頼るのではなく、必ずフォーマットマスクを指定してください。
- WHERE句における暗黙的な型変換。 文字型の列と数値型を比較すると、行ごとに型変換が発生し、効率的なフィルタリングができなくなります。列ではなく定数を変換してください。
これらのフィルターで使用される比較記号については、 SAP HANAオペレーターより広いプラットフォームでは SAP HANAチュートリアル シリーズ。
