sql - 标准 SQL (BigQuery) 中的用户定义数据类型?
问题描述
是否可以在标准 SQL 中创建用户定义的数据类型,然后可以从 SQL 代码本身中引用?
例如,假设我想创建一个函数,它需要两个实例STRUCT
- 每个实例包含三个 type 条目STRING
。这需要写这样的东西;
CREATE TEMP FUNCTION myFunc(x STRUCT<STRING, STRING, STRING>, y STRUCT<STRING, STRING, STRING>) AS (...);
不过,我想做的是这样的(伪代码);
CREATE TYPE myType STRUCT<STRING, STRING, STRING>
CREATE TEMP FUNCTION myFunc(x myType, y myType) AS (...)
解决方案
类似的方法是使用 ANY TYPE 来创建您的函数,例如:
CREATE TEMP FUNCTION myFunc(x ANY TYPE, y ANY TYPE) AS (...);
要回答评论中的问题,如果需要强类型检查,您仍然可以这样做并使用检查 myFunc() 的参数以在类型不兼容时报告错误:
CREATE TEMP FUNCTION check_type_x(x ANY TYPE) AS (STRUCT(x.a, x.b, x.c));
SELECT myFunc(check_type_x(col1), check_type_x(col2));
推荐阅读
- ruby - 捆绑安装失败,Gem 安装成功
- asp.net-mvc - HTML 表单数据未发布到 Web API 控制器
- python - numpy.unpackbits 的懒惰版本
- excel - 尝试在 Range 对象中使用字符串对象时,对象 _global 的方法范围失败
- sql - 截断 SQL 单元格中特定数量的字符
- r - 表单提交时出现 rvest 错误
- powershell - 从串口读取数据导致 Powershell 挂起
- regex - 编写正则表达式,查找单 l 词到双 l 词
- sql-server - SQL Server 矢量时钟
- regex - 不知道如何用 AppleScript 实现 REGEX