【问题标题】:Query to select all tables with specific last column Ibm Db2 z/os查询以选择具有特定最后一列的所有表 Ibm Db2 z/os
【发布时间】:2021-05-10 16:57:36
【问题描述】:

目标:我需要创建一个查询来选择具有特定最后一列 Ibm Db2 z/os 的所有表

所以我知道我需要为此更改 where 子句,但我非常想选择架构中最后一列作为 BATCH_ID 的所有表。我已经尝试过基于长度的 where 子句,但也无法弄清楚我知道 MySQL 有一个序数位置功能,但据我所见,这不在 IBM DB2 z/Os 中。任何帮助将不胜感激。

select c.tabschema as schema_name,
       c.tabname as table_name
from syscat.columns c
inner join syscat.tables t on 
      t.tabschema = c.tabschema and t.tabname = c.tabname
where c.colname = 'BATCH_ID' AND c.tabschema = 'WRIT5P1'
AND c.tabname not like 'OLD%'
and t.type = 'T'
order by schema_name, table_name; 

【问题讨论】:

    标签: sql db2 websphere


    【解决方案1】:

    SYSIBM.SYSTABLES
    SYSIBM.SYSCOLUMNS

    SELECT T.NAME AS TABLE_NAME
    FROM SYSIBM.SYSTABLES T
    JOIN SYSIBM.SYSCOLUMNS C ON C.TBNAME = T.NAME AND C.TBCREATOR = T.CREATOR
    WHERE T.TYPE = 'T' AND T.CREATOR = 'WRIT5P1'
    AND T.NAME NOT LIKE 'OLD%'
    AND C.NAME = 'BATCH_ID'
    AND C.COLNO = T.COLCOUNT
    

    我不记得 C.COLNO 是从 0 开始还是从 1 开始。如果它从 0 开始,请相应地编辑查询。

    【讨论】:

    • 嗯,这似乎不起作用,我应该把 COLNO = 0 放在哪里,因为那是 ibm db2 z/OS 的列开始的地方?
    • C.COLNO + 1 = T.COLCOUNT 而不是C.COLNO = T.COLCOUNT。
    • 太好了,谢谢@Mark Ba​​rinstein
    猜你喜欢
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多