达梦数据库查出指定表的所有列名

如下 SQL 查出表的所有列名:

SELECT 
    COLUMN_NAME
FROM 
    ALL_TAB_COLUMNS 
WHERE 
    TABLE_NAME = 'YOUR_TABLE_NAME'  -- 替换为你的表名
    AND OWNER = 'YOUR_SCHEMA_NAME'; -- 替换为你的模式名(如未指定则删除此行)

如下 SQL 将列名用逗号分隔:

SELECT 
    LISTAGG(COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) AS COLUMNS
FROM 
    ALL_TAB_COLUMNS 
WHERE 
    TABLE_NAME = 'YOUR_TABLE_NAME'  -- 替换为你的表名
    AND OWNER = 'YOUR_SCHEMA_NAME'; -- 替换为你的模式名(如未指定则删除此行)

如下 SQL 将列名用逗号分隔,并在列前面添加前缀(这里为a.):

SELECT 
    LISTAGG('a.' || COLUMN_NAME, ', ') WITHIN GROUP (ORDER BY COLUMN_ID) AS COLUMNS
FROM 
    ALL_TAB_COLUMNS 
WHERE 
    TABLE_NAME = 'YOUR_TABLE_NAME'  -- 替换为你的表名
    AND OWNER = 'YOUR_SCHEMA_NAME'; -- 替换为你的模式名(如未指定则删除此行)

其中函数 LISTAGG 是达梦数据库支持的字符串聚合函数,用于将多行数据合并为一行:

  • 语法:LISTAGG(字段名,'分隔符') WITHIN GROUP (ORDER BY 排序字段)
  • 类似其他数据库的 GROUP_CONCAT(MySQL)或 STRING_AGG(SQL Server)。

参考:DeepSeek

posted @ 2025-04-14 22:20  Higurashi-kagome  阅读(366)  评论(0)    收藏  举报