开发者社区 问答 正文

select concat() 加别名 无法解析

请问,select字段做了函数处理且使用别名,如何获取字段名称? eg:select concat(a,b) as aa from t; 只能获得dd none

原提问者GitHub用户pandakll

展开
收起
山海行 2023-07-05 19:34:53 114 发布于北京 分享
分享
版权
举报
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果使用concat()将多个字段连接为一个字段后,加上别名,可能无法正确解析。
    这可能是数据库或查询框架的问题。
    主要的根源是:
    数据库本身不支持使用函数表达式定义的字段有别名。
    查询框架不能正确解析函数表达式和别名。

    为了解决这个问题,可以采用以下两种方式:使用子查询;在原始字段上创建视图

    2023-07-30 16:17:08 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 老版本解析字段复杂处理和别名有问题,新版本已经删除,自己构建解决。

    原回答者GitHub用户pandakll

    2023-07-06 11:01:56 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
  • 如果在SELECT语句中对字段进行函数处理并使用别名,要获取字段的名称,可以使用数据库系统提供的元数据查询功能。不同的数据库系统可能有不同的方法,以下是几个常见的数据库系统的示例:

    MySQL

    你可以使用INFORMATION_SCHEMA数据库来查询表和列的信息。使用下面的SQL语句可以获取字段名称:

    SELECT COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 't' AND TABLE_SCHEMA = 'your_database_name' AND COLUMN_NAME <> 'aa';
    

    请将your_database_name替换为你的数据库名称。

    PostgreSQL

    你可以使用information_schema模式来查询表和列的信息。以下是获取字段名称的SQL语句:

    SELECT column_name
    FROM information_schema.columns
    WHERE table_name = 't' AND table_schema = 'public' AND column_name <> 'aa';
    

    请将public替换为你的表所在的模式名称。

    SQL Server

    你可以使用sys.columns系统视图来查询表和列的信息。以下是获取字段名称的SQL语句:

    SELECT name
    FROM sys.columns
    WHERE object_id = OBJECT_ID('t') AND name <> 'aa';
    

    Oracle

    你可以使用USER_TAB_COLUMNS数据字典视图来查询表和列的信息。以下是获取字段名称的SQL语句:

    SELECT column_name
    FROM user_tab_columns
    WHERE table_name = 'T' AND column_name <> 'AA';
    

    请将T替换为你的表名称。

    注意:上述示例中的aa是你在SELECT语句中使用的别名,因此需要将其排除在外。

    2023-07-05 19:50:14 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答标签:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等