大佬们想问一下pg库表名支不支持正则匹配呢?

问题1:大佬们想问一下pg库表名支不支持正则匹配呢? 问题2:mysql的支持,pg的不支持呢

展开
收起
真的很搞笑 2023-07-02 17:31:07 176 分享 版权
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    ostgreSQL 中的表名是标识符,标识符可以使用正则表达式进行匹配,因此可以对表名进行正则匹配。
    在 PostgreSQL 中,可以使用 ~ 或者 ~ 运算符来进行正则匹配。其中,~ 表示区分大小写的正则匹配,~ 表示不区分大小写的正则匹配。以下是一个示例:
    sql
    Copy
    -- 查询所有以 "test_" 开头的表名
    SELECT table_name FROM information_schema.tables WHERE tablename ~ '^test';
    在上述示例中,我们使用 ~ 运算符对表名进行正则匹配,查询所有以 "test_" 开头的表名。需要注意的是,上述语句中使用了 information_schema.tables 系统视图来查询表名信息,您也可以使用其他方式来查询表名信息。
    需要注意的是,正则表达式的匹配规则可能会影响查询性能,因此建议您在使用正则表达式进行表名匹配时,尽量使用简单的正则表

    2023-07-30 09:39:43
    赞同 展开评论
  • 对于问题1,PostgreSQL(pg)的库表名不支持直接的正则匹配。在 PostgreSQL 中,表名必须遵循标识符的命名规则,不能包含特殊字符或正则表达式。

    然而,你可以通过使用 PostgreSQL 的模式(schema)来组织表,并使用模式名称来进行匹配。模式允许你对表进行逻辑分组,并更好地组织数据库对象。

    以下是一个示例,展示如何使用模式来实现类似于正则表达式的匹配:

    -- 创建模式
    CREATE SCHEMA schema_name;
    
    -- 创建具有特定模式的表
    CREATE TABLE schema_name.table_name (...);
    
    -- 使用模式名称进行匹配
    SELECT * FROM information_schema.tables WHERE table_schema LIKE 'schema_name%';
    

    对于问题2,MySQL 支持在表名和其他标识符中使用通配符和正则表达式进行模糊匹配。你可以使用 LIKE 或正则表达式函数来查询满足特定模式的表名。

    例如,在 MySQL 中,你可以使用以下语句进行模糊表名匹配:

    -- 使用 LIKE 进行模糊匹配
    SELECT * FROM information_schema.tables WHERE table_name LIKE 'pattern%';
    
    -- 使用正则表达式函数进行匹配
    SELECT * FROM information_schema.tables WHERE REGEXP_LIKE(table_name, 'regex_pattern');
    

    需要注意的是,具体实现可能会因 PostgreSQL 或 MySQL 版本而有所不同,因此建议查阅官方文档以获取更详细和具体的信息。

    2023-07-30 09:36:14
    赞同 展开评论
  • 回答1:看起来是不可以的,此回答整理自钉群“Flink CDC 社区”

    2023-07-02 17:35:44
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理