我们可以在 select 语句中使用 Map(col1,col2)

Can we use Map(col1,col2) in select statement

我需要在 select 查询中动态创建映射列

我想在select语句中使用地图

select map(col1,col2) from tbl1

这是我的错误:

AnalysisException: Syntax error in line 1:undefined: select
map(cnck.gluten_meal_protein... ^ Encountered: MAP Expected: ALL,
CASE, CAST, DEFAULT, DISTINCT, EXISTS, FALSE, IF, INTERVAL, LEFT, NOT,
NULL, REPLACE, RIGHT, STRAIGHT_JOIN, TRUNCATE, TRUE, IDENTIFIER CAUSED
BY: Exception: Syntax error

试试这个:

String HQL_QUERY = "select new map(col1, col2) from Table";        
List<Map<String,String>> usersList = session.createQuery(HQL_QUERY).list(); 

使用str_to_map(text, [delimiter1, delimiter2])函数。 Delimiter1 将文本分成 K-V 对,Delimiter2 将每个 K-V 对分开。 delimiter1 的默认分隔符是 ',',delimiter2 的默认分隔符是 ':'

select str_to_map(concat( 'col1', ':', col1, ',', 'col2', ':', col2 )) as mymap
  from table;

您可以为键指定不同的名称,它可以不一定等于列名。