请问,select字段做了函数处理且使用别名,如何获取字段名称? eg:select concat(a,b) as aa from t; 只能获得dd none
原提问者GitHub用户pandakll
如果使用concat()将多个字段连接为一个字段后,加上别名,可能无法正确解析。
这可能是数据库或查询框架的问题。
主要的根源是:
数据库本身不支持使用函数表达式定义的字段有别名。
查询框架不能正确解析函数表达式和别名。
为了解决这个问题,可以采用以下两种方式:使用子查询;在原始字段上创建视图
如果在SELECT语句中对字段进行函数处理并使用别名,要获取字段的名称,可以使用数据库系统提供的元数据查询功能。不同的数据库系统可能有不同的方法,以下是几个常见的数据库系统的示例:
你可以使用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
替换为你的数据库名称。
你可以使用information_schema
模式来查询表和列的信息。以下是获取字段名称的SQL语句:
SELECT column_name
FROM information_schema.columns
WHERE table_name = 't' AND table_schema = 'public' AND column_name <> 'aa';
请将public
替换为你的表所在的模式名称。
你可以使用sys.columns
系统视图来查询表和列的信息。以下是获取字段名称的SQL语句:
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('t') AND name <> 'aa';
你可以使用USER_TAB_COLUMNS
数据字典视图来查询表和列的信息。以下是获取字段名称的SQL语句:
SELECT column_name
FROM user_tab_columns
WHERE table_name = 'T' AND column_name <> 'AA';
请将T
替换为你的表名称。
注意:上述示例中的aa
是你在SELECT语句中使用的别名,因此需要将其排除在外。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。