在您的 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;