我正试图编写一个查询,只匹配与特定格式匹配的表名,该格式如下:FirstWord1_SecondWord2_ThirdWord3.
所以我想要得到的表名必须匹配三个字母数字单词的格式,这些单词由下划线分隔。
我一直在努力锻炼使用REGEXP_CONTAINS来获得我想要的结果的确切方法。下面是我所能得到的最接近的,但它不会返回任何结果,尽管我知道有与我想要查询的格式匹配的表。
SELECT table_name as tablenames
FROM project.dataset.INFORMATION_SCHEMA.TABLES
WHERE (
REGEXP_CONTAINS(table_name, '^([[:alnum:]]+_[[:alnum:]]+_[[:alnum:]])$')
)
对此的任何帮助都将非常感激!
您的最后一个[[:alnum:]]
缺少一个+
来表示一个或多个匹配字符。
SELECT table_name as tablenames
FROM project.dataset.INFORMATION_SCHEMA.TABLES
WHERE (
REGEXP_CONTAINS(table_name, '^([[:alnum:]]+_[[:alnum:]]+_[[:alnum:]]+)$')
)
或
SELECT table_name as tablenames
FROM project.dataset.INFORMATION_SCHEMA.TABLES
WHERE (
REGEXP_CONTAINS(table_name, '^[[:alnum:]]+_[[:alnum:]]+_[[:alnum:]]+$')
)
让我知道这是否适合你。