gpt4 book ai didi

sql - Informix SQL - 列出所有字段和表

转载 作者:行者123 更新时间:2023-12-03 12:35:39 32 4
gpt4 key购买 nike

Informix iSQL 有一个命令“info tables;”显示所有表。
查看字段及其各自数据类型的语法为“info columns for table;

是否有类似的命令显示所有表和所有字段的 table.field?

最佳答案

使用首选的 JOIN 表示法:

SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t
JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
WHERE t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;

或老式的 join-in-where-clause 表示法:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t, "informix".syscolumns AS c
WHERE t.tabid = c.tabid
AND t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;

假设您使用的是最新版本的 IDS,您可以按选择列表中未引用的列进行排序。如果您收到投诉,请将排序列添加到选择列表中。

加入标准很明显; tabtype = 'T' 只列出表,不列出 View 、同义词和其他列在 systables 中的项目; tabid >= 100 只列出在数据库中显式创建的表,而不是系统目录。

这不包括类型信息 - 如果你想要,你必须做更多的工作。你会发现一个文件 $INFORMIXDIR/etc/xpg4_is.sql它包含对旧版本 XPG4(X/Open 标准)信息架构的粗略近似(因此是文件名)。在那里,有从 syscolumns.coltype 解码类型信息的函数等。和 syscolumns.collength成可识别的字符串。但是,我强烈怀疑它不处理 DISTINCT 类型,也不处理其他用户定义的类型。我很高兴被证明是错误的,但是...如果您将该文件的相关部分添加到您的数据库中,那么您也应该能够获得类型信息。

还要注意,ISQL和DB-Access中的所有INFO命令都是在前端模拟的,不是在IDS服务器中执行的。基本上,程序接受请求并将其转换为更复杂的 SQL 语句。查看文件 sqlinfo.ec中的代码这是 SQLCMD(可从 IIUG Software Archive 获得)的一部分,用于说明我的 SQLCMD 程序如何处理 INFO 语句。 (注意:SQLCMD 的 INFO 输出的格式与 ISQL 和 DB-Access 的 INFO 输出的格式不同。)

关于sql - Informix SQL - 列出所有字段和表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380782/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com