在您的 UDx 中使用通配符

Vertica 支持在用户定义的函数中使用通配符 * 来替代列名称。

您可以在以下情况下使用通配符:

  • 您的查询在 FROM 子句中包含表

  • 您正在使用支持 Vertica 的开发语言

  • 您的 UDx 正在以隔离模式或非隔离模式运行

支持的 SQL 语句

以下 SQL 语句可以接受通配符:

  • DELETE

  • INSERT

  • SELECT

  • UPDATE

不支持的配置

以下情况不支持通配符:

  • 不能在查询的 OVER 子句中传递通配符

  • 不能在 DROP 语句中使用通配符

  • 不能将通配符与任何其他参数结合使用

示例

以下示例显示了一系列数据处理操作中的通配符和用户定义的函数。

DELETE 语句:

=> DELETE FROM tablename WHERE udf(tablename.*) = 5;

INSERT 语句:

=> INSERT INTO table1 SELECT udf(*) FROM table2;

SELECT 语句:

=> SELECT udf(*) FROM tablename;
=> SELECT udf(tablename.*) FROM tablename;
=> SELECT udf(f.*) FROM table f;
=> SELECT udf(*) FROM table1,table2;
=> SELECT udf1( udf2(*) ) FROM table1,table2;
=> SELECT udf( db.schema.table.*) FROM tablename;
=> SELECT udf(sub.*) FROM (select col1, col2 FROM table) sub;
=> SELECT x FROM tablename WHERE udf(*) = y;
=> WITH sub as (SELECT * FROM tablename) select x, udf(*) FROM sub;
=> SELECT udf( * using parameters x=1) FROM tablename;
=> SELECT udf(table1.*, table2.col2) FROM table1,table2;

UPDATE 语句:

=> UPDATE tablename set col1 = 4 FROM tablename WHERE udf(*) = 3;