微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Informix SQL – 列出所有字段和表

Informix isql一个命令“info tables;”显示所有表.
用于查看字段及其各自数据类型的语法是“表的信息列”;

是否有类似的命令显示所有表和所有字段的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’仅列出表中列出的视图,同义词和其他类似项目; tabid> = 100只列出了数据库中明确创建的表,而不是系统目录.

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

另请注意,Isql和DB-Access中的所有INFO命令都在前端进行仿真,不会在IDS服务器中执行.基本上,程序接受请求并将其转换成更复杂的sql语句.请参阅sqlCMD(可从IIUG Software Archive获取)的一部分sqlinfo.ec文件中的代码,了解我的sqlCMD程序如何处理INFO语句. (注意:sqlCMD的INFO输出格式与Isql和DB-Access的INFO输出格式不同.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐