【问题标题】:Get list of column names from a Firebird database table从 Firebird 数据库表中获取列名列表
【发布时间】:2013-10-16 00:40:28
【问题描述】:

如何获取特定表中的列名列表?

即。

火鸟表:

|姓名 |编号 |电话号码 |

得到这样的列表:

columnList = ['name', 'id', 'phone_number']

【问题讨论】:

    标签: python sql firebird firebird2.5 fdb


    【解决方案1】:

    如果您想获取特定表中的列名列表,这就是您需要的 sql 查询:

    select rdb$field_name from rdb$relation_fields
    where rdb$relation_name='YOUR-TABLE_NAME';
    

    我在 firebird 2.5 中试过这个,它可以工作。

    你的表名周围的单引号是必需的

    【讨论】:

    • 您可能还想添加此 order by 子句以按位置顺序获取字段名称:order by rdb$field_position
    • 还要注意 Firebird 表名都是大写的。所以如果你的表叫CUSTOMERS,SQL语句就是select rdb$field_name from rdb$relation_fields where rdb$relation_name='CUSTOMERS' order by rdb$field_position;
    【解决方案2】:

    获取所有表格的列列表(逗号分隔,按位置排序):

    SELECT RDB$RELATION_NAME AS TABLE_NAME, list(trim(RDB$FIELD_NAME),',') AS COLUMNS
    FROM RDB$RELATIONS
    LEFT JOIN (SELECT * FROM RDB$RELATION_FIELDS ORDER BY RDB$FIELD_POSITION) USING (rdb$relation_name)
    WHERE
    (RDB$RELATIONS.RDB$SYSTEM_FLAG IS null OR RDB$RELATIONS.RDB$SYSTEM_FLAG = 0)
    AND RDB$RELATIONS.rdb$view_blr IS null 
    GROUP BY RDB$RELATION_NAME
    ORDER BY 1
    

    【讨论】:

      【解决方案3】:

      在数据库表中检查 YOUR-COLUMN_NAME_fragment 效果很好,在 FB 3.0.7 上的 DBeaver 中使用

      select 
          RDB$FIELD_NAME AS "COLUMN", 
          RDB$RELATION_NAME AS "TABLE" 
      from 
          rdb$relation_fields
      where 
          RDB$FIELD_NAME like '%YOUR-COLUMN_NAME_fragment%';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多