不同的数据库字符串连接有用不同的符号,比如 SQLSERVER 用 +,Oracle 用 ||。
早期的达梦版本两种都支持,新版本只支持 ||,因为 + 同时作为连接符和运算符会有歧义,例如下面这个 SQL:
select '1' + '1' from dual;
结果应该是 2 还是 11 呢?
达梦还可以像 MySQL 一样用 concat 函数,如下所示:
select concat('1','1') from dual;
也支持 wm_concat,Oracle 里面是 wmsys.wm_concat,移植到达梦的时候把 wmsys. 去掉即可,如下所示:
create table test(id int,name varchar(100));
insert into test values(1,'我的');
insert into test values(1,'中国梦');
insert into test values(2,'我的');
insert into test values(2,'中国心');
commit;
select wm_concat(name) from test group by id;
高版本的 Oracle 中已经废弃了 wm_concat 函数,建议用 listagg,达梦也建议用 listagg,如下所示:
SELECT LISTAGG(name,'-') within GROUP(order by name) FROM test group by id;
文章
阅读量
获赞