Amazon redshift 从字段中删除剩余字符
我有下面的查询,我正在尝试删除Amazon redshift 从字段中删除剩余字符,amazon-redshift,Amazon Redshift,我有下面的查询,我正在尝试删除CREATE TABLE语句中第一个()后面的所有字符,以及仅显示表名的()查询。我有一个删除(并清除表名,但我仍然无法清除后面的其余字符( 预期结果: userid | user | table_name | creation_date --------+-------+--------------------------------+---------------------------- 100
CREATE TABLE
语句中第一个(
)后面的所有字符,以及仅显示表名的(
)查询。我有一个删除(
并清除表名,但我仍然无法清除后面的其余字符(
预期结果:
userid | user | table_name | creation_date
--------+-------+--------------------------------+----------------------------
100 | admin | analytics.cluster_1000 | 2017-10-13 16:17:26.387716
(1 row)
我不确定您的
create table
stmt通常是什么样子,但您可以尝试使用regexp\u substr
SELECT
stl.userid
, trim(pg.usename) AS user
, REPLACE(regexp_substr(text, '([\.a-z0-9A-Z]*)\\('), '(', '') as tablename
, starttime AS creation_date
FROM stl_ddltext AS stl
JOIN pg_user AS pg
ON stl.userid = pg.usesysid
WHERE text ILIKE '%create table%' AND pg.usename NOT LIKE '%mcp_etl%' AND pg.usename NOT LIKE '%apiadmin%' AND pg.usename NOT LIKE '%afscloud%'
ORDER BY creation_date DESC
LIMIT 1;
它基本上是在第一个
(
之前提取所有内容,然后替换(
我不确定创建表的stmt通常是什么样子,但您可以尝试使用regexp\u substr
SELECT
stl.userid
, trim(pg.usename) AS user
, REPLACE(regexp_substr(text, '([\.a-z0-9A-Z]*)\\('), '(', '') as tablename
, starttime AS creation_date
FROM stl_ddltext AS stl
JOIN pg_user AS pg
ON stl.userid = pg.usesysid
WHERE text ILIKE '%create table%' AND pg.usename NOT LIKE '%mcp_etl%' AND pg.usename NOT LIKE '%apiadmin%' AND pg.usename NOT LIKE '%afscloud%'
ORDER BY creation_date DESC
LIMIT 1;
它基本上是在第一个(
之前提取所有内容,然后替换(
如果这对字符串有效,看起来不错-否则您可以设置python UDF,以便对如何到达数据域进行更灵活的程序控制如果这对字符串有效,看起来不错-否则您可以设置python UDF,以便对如何到达数据域进行更灵活的程序控制