【DM版本】:4-2-70-21.09.30-148424-10028-SEC Pack3
【操作系统】:麒麟v10
【CPU】:kunpeng-920
【问题描述】*:在达梦中通过SQL查询,实现在mysql执行show full columns from xx的 等价查询 。 特别是获取到结果中 Privileges 字段返回的内容。
【诉求】:希望帮忙确定一下查询关联关系的正确性,以及如果获取Privileges 的内容。
select
A.COLUMN_NAME as "Filed"
, A.DATA_TYPE || '('|| A.DATA_LENGTH || ')' as "Type"
, A.nullable as "Null"
, D.CONSTRAINT_TYPE as "Key"
, A.data_default as "Default"
, "Extra" as "Extra"
,'select,insert,update,references' as "Privileges"
,ifnull(comment$,'') as "Comment"
from dba_tab_columns a
LEFT JOIN SYSCOLUMNCOMMENTS B ON A.TABLE_NAME =B.TVNAME AND A.COLUMN_NAME =B.COLNAME AND A.OWNER =B.SCHNAME
LEFT JOIN DBA_CONS_COLUMNS C ON A.OWNER=C.OWNER AND A.TABLE_NAME =C.TABLE_NAME AND A.COLUMN_NAME =C.COLUMN_NAME
LEFT JOIN DBA_CONSTRAINTS D ON D.CONSTRAINT_NAME=C.CONSTRAINT_NAME
left join (
select b.table_name,b.owner, decode(a.info2,1,'auto_increment',null) as "Extra",
a.name as COLUMN_NAME
from SYS.SYSCOLUMNS a,
all_tables b,
sys.sysobjects c
where a.INFO2
& 0x01 = 0x01
and a.id=c.id
and c.name= b.table_name )e on a.OWNER=e.OWNER and a.TABLE_NAME=e.table_name and A.COLUMN_NAME=e.COLUMN_NAME
where A.owner=? and A.TABLE_NAME =?
老哥这个问题解决了嘛?你写的实例语句可以平替SHOW FULL COLUMNS FROM XX 嘛?
解决了吗?同样的问题。
SELECT a.column_name, data_type, DECODE(nullable, 'Y', 0, 1) as notnull, data_default, DECODE(A .column_name,b.column_name,1,0) as pk FROM all_tab_columns a, ( SELECT column_name FROM all_constraints c INNER JOIN all_cons_columns col ON c.constraint_name = col.constraint_name WHERE c.constraint_type = 'P' AND c.table_name = '" . strtoupper($tableName) . "' ) b WHERE table_name = '" . strtoupper($tableName) . "' AND a.column_name = b.column_name