E.g。
给定一个只有原始类型的表,例如 -
550px
...和create table t (i int, dt date, str string, ts timestamp, bl boolean)
;
insert into t
select 1,date '2017-03-14','Hello world',timestamp '2017-03-14 14:37:28.889',true
;
select * from t
;
+-----+------------+-------------+-------------------------+------+
| t.i | t.dt | t.str | t.ts | t.bl |
+-----+------------+-------------+-------------------------+------+
| 1 | 2017-03-14 | Hello world | 2017-03-14 14:37:28.889 | true |
+-----+------------+-------------+-------------------------+------+
作为请求的分隔符
(为简单起见,我们可以假设它不会出现在数据中的任何地方)
请求的结果将是单个分隔的字符串
1 ||| 2017-03-14 ||| Hello world ||| 2017-03-14 14:37:28.889 ||| true
答案 0 :(得分:0)
此解决方案仅限于包含" primitive"仅类型(没有结构,数组,地图等)。
|||
1 ||| 2017-03-14 ||| Hello world ||| 2017-03-14 14:37:28.889 ||| true
P.S。
select printf(concat('%s',repeat('|||%s',field(unhex(1),*,unhex(1))-2)),*)
from t
;
有效,但值不是用分隔符分隔的
concat(*)
会产生异常。