- 类别:
VALUES¶
在 SELECT 语句中,FROM 子句的 VALUES 分子句允许指定一组常量来形成有限的行集。
有关 INSERT 语句中 VALUES 子句的信息,请参阅 INSERT 语句的文档。
语法¶
参数¶
expr每个表达式必须是常量,或者是在 SQL 语句编译期间可以计算为常量的表达式。
大多数简单的算术表达式和字符串函数都可以在编译时计算,但大多数其他表达式不能。
table_alias可选别名,用于为行集命名,就好像行集是一个表一样。
column_alias可选的列别名,可指定列名称。
使用说明¶
在 FROM 子句中,VALUES 子句不能包含
DEFAULT关键字。这与 INSERT 语句中的 VALUES 子句相反,后者支持使用DEFAULT;例如INSERT INTO table VALUES (10, DEFAULT, 'Name') ...。当 VALUES 子句包含同一列的多个数值,并且这些值的小数位数或精度有显著差异时,Snowflake 可能会返回
out of range错误。即使每个单独的值不会导致目标列的数据类型出现错误,也可能会返回错误。之所以发生错误,是因为 Snowflake 确定了一种常见的数字数据类型,该数据类型可以包含 VALUES 子句中提供的所有数字字面量,并且某些值可能超出所确定的通用数据类型的范围。
例如,以下语句会返回
out of range错误:您可以通过进行以下更改来避免此类错误:
将 VALUES 子句中的值分成多个 SQL 语句。
将值转换为具有更大范围值的数据类型,例如 FLOAT。但是,类型转换可能会导致数字精度降低。
将值指定为放在引号中的文本字符串,然后根据需要将值转换为数值。
The VALUES clause is limited to 200,000 rows.
示例¶
以下示例使用 VALUES 子句生成一组固定的已知行:
您可以通过列名称(隐式)或列位置来引用值。以下示例按列位置引用第二列:
以下示例使用别名区分多个 VALUES 子句:
您还可以为列名指定别名,如以下示例所示: