运行以下查询时:
WITH sublevels AS ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1), FIELDA AS (SELECT (ROW_NUMBER() OVER ())::INT sublevel FROM sublevels sl1, sublevels sl2, sublevels sl3) SELECT TOP 10 FIELDB, sublevel, REPLACE(REGEXP_REPLACE(REGEXP_SUBSTR(UPPER(FIELDC), 'FROM \\S+', 1, sublevel), 'FROM ', ''),')','') ALIASA FROM TABLEA JOIN FIELDA ON sublevel <= REGEXP_COUNT(UPPER(FIELDC), 'FROM ') WHERE ALIASA != 'ABC' AND lower(split_part(ALIASA, '.', 2)) IN ( SELECT DISTINCT lower(t.table_name) FROM information_schema.tables t INNER JOIN information_schema.columns c on c.table_name = t.table_name AND c.table_schema = t.table_schema WHERE lower(column_name) similar TO '%(aaa|bbb|ccc)%')
我收到以下错误:
错误:0A000:Redshift表不支持指定的类型或功能(每个INFO消息一个)。
我不知道为什么,如果我单独运行查询,它们可以正常工作:
查询1
WITH sublevels AS ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1), FIELDA AS (SELECT (ROW_NUMBER() OVER ())::INT sublevel FROM sublevels sl1, sublevels sl2, sublevels sl3) SELECT TOP 10 FIELDB, sublevel, REPLACE(REGEXP_REPLACE(REGEXP_SUBSTR(UPPER(FIELDC), 'FROM \\S+', 1, sublevel), 'FROM ', ''),')','') ALIASA FROM TABLEA JOIN FIELDA ON sublevel <= REGEXP_COUNT(UPPER(FIELDC), 'FROM ') WHERE ALIASA != 'ABC'
查询2
SELECT DISTINCT lower(t.table_name) FROM information_schema.tables t INNER JOIN information_schema.columns c on c.table_name = t.table_name AND c.table_schema = t.table_schema WHERE lower(column_name) similar TO '%(aaa|bbb|ccc)%'
在Redshift中:
您不能混合和匹配1.和2。