Oracle多行记录合并/连接/聚合字符串的几种方法
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y
CITY VARCHAR2(20) Y
SQL> select * from test;
COUNTRY CITY
-------------------- --------------------
中国 台北
中国 香港
中国 上海
日本 东京
日本 大阪
要求得到如下结果集:
------- --------------------
中国 台北,香港,上海
日本 东京,大阪
实际就是对字符实现一个聚合功能,我很奇怪为什么Oracle没有提供官方的聚合函数来实现它呢:)
下面就对几种经常提及的解决方案进行分析(有一个评测标准最高★★★★★):
1.被集合字段范围小且固定型 灵活性★ 性能★★★★ 难度 ★
这种方法的原理在于你已经知道CITY字段的值有几种,且还不算太多,如果太多这个SQL就会相当的
长。。看例子:
SQL> select t.country,
2 MAX(decode(t.city,'
相关文档:
类型名称
Oracle
SQLServer
比较
字符数据类型
CHAR
CHAR
都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型
VARCHAR2
VARCHAR
Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串
NCHAR
NCHAR
前者最大长度2kb后者最大长度4 ......
为这些用户名设置足够强壮的口令或锁定无用的默认用户。
SQL语句修改:
连接至Oracle后使用如下命令修改口令:
alter user system(用户名) identified by manager(密码);
连接至Oracle后使用如下命令锁定账号:
alter user test(用户名) account lock;
图形窗口修改:
Oracle服务openview上的用户:SCOT ......
Cmd命令行输入lsnrctl进入监听模式,通过set password设置密码。
通过 change_password 修改密码。
LSNRCTL> help
以下操作可用
星号 (*) 表示修改符或扩展命令:
start stop &nbs ......
select distinct id
from table t
where rownum < 10
order by t.id desc;
上述语句的过滤条件执行顺序 先where --->order by --->distinct
如果有group by的话 group by 在order by前面的 ......