开发者社区> 问答> 正文

select concat() 加别名 无法解析

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

原提问者GitHub用户pandakll

展开
收起
山海行 2023-07-05 19:34:53 84 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

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

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

    2023-07-30 16:17:08
    赞同 展开评论 打赏
  • 老版本解析字段复杂处理和别名有问题,新版本已经删除,自己构建解决。

    原回答者GitHub用户pandakll

    2023-07-06 11:01:56
    赞同 展开评论 打赏
  • 如果在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
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像