適用対象:
Databricks SQL
Databricks Runtime
フィールドのシーケンスで記述された構造体を持つ値を表します。
構文
STRUCT < [fieldName [:] fieldType [NOT NULL] [COLLATE collationName] [COMMENT str] [, …] ] >
fieldName: フィールドに名前を付ける識別子。 この名前は、一意である必要はありません。fieldType:任意のデータ型。NOT NULL: 指定すると、構造体によって、このフィールドの値がNULLにならないことが保証されます。COLLATEcollationName: 必要に応じてこれを使ってfieldTypeのSTRINGに使用する照合順序を指定します。指定しない場合、照合順序は、
STRUCTが定義されているコンテキストから継承されます。-
CREATE、ALTER、またはTABLEのVIEWまたはFUNCTION内では、既定の照合順序は、そのTABLE、VIEW、またはFUNCTIONの既定の照合順序と一致します。 - 最上位レベルの UPDATE 、 DELETE、 INSERT、 MERGE 、または クエリ ステートメント のコンテキスト内では、既定の照合順序は
UTF8_BINARY。
-
COMMENT str: フィールドを記述する文字列リテラル (省略可能)。
制限
型は、0 以上の任意の数のフィールドをサポートします。
リテラル
リテラル配列値struct生成する方法の詳細については、関数とnamed_struct関数を参照してください。
例
> SELECT struct('Spark', 5);
{Spark, 5}
> SELECT typeof(named_struct('Field1', 'Spark', 'Field2', 5));
struct<Field1:string,Field2:int>
> SELECT typeof(struct('Spark', 5));
struct<col1:string,col2:int>
> SELECT typeof(CAST(NULL AS STRUCT<Field1:INT NOT NULL COMMENT 'The first field.',Field2:ARRAY<INT>>));
struct<Field1:int,Field2:array<int>>
> SELECT collation(cast(struct('hello')) AS STRUCT<name STRING COLLATE UNICODE_CI>).name);
SYSTEM.BUILTIN.UNICODE_CI