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,以便对如何到达数据域进行更灵活的程序控制