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

fzsnzjdm  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(350)

我需要在select查询中动态创建一个map列
我想在select语句中使用map

select map(col1,col2) from tbl1

这是我的错误:
analysisexception:第1行出现语法错误:未定义:select
map(蛋白、面筋、膳食、蛋白质…^遇到:Map应为:all,
case,cast,default,distinct,exists,false,if,interval,left,not,
null,replace,right,直\u join,truncate,true,标识符
by:异常:语法错误

sbdsn5lh

sbdsn5lh1#

试试这个:

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

fcipmucu2#

使用 str_to_map(text, [delimiter1, delimiter2]) 功能。delimiter1将文本分成k-v对,delimiter2将每个k-v对分开。默认分隔符为 ',' 对于分隔符1和 ':' 对于分隔符2:

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

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

相关问题