COLUMNS view (multiple schemas): New column (Pending)

注意

此行为变更包含在 2025_07 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

启用此行为变更捆绑包后,Account Usage、Organization Usage 和 Information Schema 中的 COLUMNS 视图包括以下新列:

列名称

数据类型

描述

data_type_alias

VARCHAR

创建表时或上次修改列时为该列指定的数据类型别名或同义词。

对于在此行为变更之前创建且在行为变更后未更改的表中的列,此列中的值为 NULL。

data_type 列显示该列的标准 Snowflake 数据类型。data_type_alias 列显示创建表时或使用 ALTER TABLE table ALTER COLUMN column SET DATA TYPE data_type 语句更改列时,为列指定的原始数据类型名称。

例如,NUMBER 是标准的 Snowflake 数据类型。BIGINT 与 NUMBER 同义。如果您指定 BIGINT 作为列的数据类型,则 COLUMNS 视图中的 data_type 列将显示该列的 NUMBER,但 data_type_alias 列显示 BIGINT:

CREATE TABLE test_data_type_alias (b BIGINT);

SELECT data_type, data_type_alias
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'TEST_DATA_TYPE_ALIAS';
Copy
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER    | BIGINT          |
+-----------+-----------------+

当为列指定标准的、不合格的 Snowflake 数据类型时,data_typedata_type_alias 列中的值是相同的。例如,如果指定 NUMBER 为列的数据类型,则 COLUMNS 视图中的 data_typedata_type_alias 都显示 NUMBER 为数据类型:

CREATE TABLE test_data_type_alias_2 (n NUMBER);

SELECT data_type, data_type_alias
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'TEST_DATA_TYPE_ALIAS_2';
Copy
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER    | NUMBER          |
+-----------+-----------------+

data_type_alias 列显示为数据类型指定的确切名称。例如,以下语句创建了一个具有完全限定 NUMBER 列的表:

CREATE TABLE test_data_type_alias_3 (n NUMBER(16, 2));

SELECT data_type, data_type_alias
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'TEST_DATA_TYPE_ALIAS_3';
Copy
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER    | NUMBER(16, 2)   |
+-----------+-----------------+

唯一的例外是 文本字符串的数据类型。文本字符串的标准 Snowflake 数据类型为 VARCHAR,但 data_type 列显示这些列的 TEXT:

CREATE TABLE test_data_type_alias_4 (
  c CHAR,
  s STRING,
  t TEXT,
  v VARCHAR,
  vq VARCHAR(25));

SELECT column_name, data_type, data_type_alias
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'TEST_DATA_TYPE_ALIAS_4'
  ORDER BY column_name;
Copy
+-------------+-----------+-----------------+
| COLUMN_NAME | DATA_TYPE | DATA_TYPE_ALIAS |
|-------------+-----------+-----------------|
| C           | TEXT      | CHAR            |
| S           | TEXT      | STRING          |
| T           | TEXT      | TEXT            |
| V           | TEXT      | VARCHAR         |
| VQ          | TEXT      | VARCHAR(25)     |
+-------------+-----------+-----------------+

这种行为变更会影响使用 SELECT * 查询这些视图,并且依赖固定数量的列的任何脚本或数据加载进程。为避免中断,请查看您的脚本和应用程序。更新 ACCOUNT_USAGE.COLUMNS、ORGANIZATION_USAGE.COLUMNS 和 INFORMATION_SCHEMA.COLUMNS 上的所有查询,以指定所需的确切列,而不是使用 SELECT *

参考:2061

语言: 中文