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,'
相关文档:
要创建两个文件
1: runBatch.bat
2: sql.txt
runBatch.bat 内容如下:
sqlplus username/password @sql.txt
pause
sql.txt内容如下:
spool sql.log
create table t1(cname char(20));
insert into t1(cname) values('test');
select * from t1;
spool off
exit
双击runBatch.bat就可以批量执行sql.txt中 ......
类型名称
Oracle
SQLServer
比较
字符数据类型
CHAR
CHAR
都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型
VARCHAR2
VARCHAR
Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串
NCHAR
NCHAR
前者最大长度2kb后者最大长度4 ......
如何修改Oracle默认用户密码有效期时间
1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE from dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql> SELECT * from dba_profiles s WHERE
  ......
Oracle对表做全表扫描的时候
,会扫描完HWM以下
的数据块。如果某个表delete(delete操作不会降低高水位)了大量数据,那么这时对表做全表扫描就会做很多无用功,扫描了一大堆数据块,最后发现块里面居然没有数据。
通常,在对表做了大批量delete操作之后,就应该马上降低表的高水位,可以使用shrink 命令或者alter&n ......
什么是savepoint?
Use the SAVEPOINT statement to identify a point in a transaction to which you can later roll back.
给你个例子
SQL> create table test (id number(7));
表已创建。
SQL> insert into test values (3);
已创建 1 行。
SQL> savepoint a;
保存 ......