oracle数据库的上机题求助:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库的上机题求助:相关的知识,希望对你有一定的参考价值。

一个数,format一下,补够五位:
第一题:如果满五位,超出部分右边截掉,如果不到五位,左边补零。
第二题:如果超出五位,不动,如果不足五位,左边补零。
要求:不能用if,else,then。
希望大虾帮忙,最好能详细讲解下,非常感谢,可追加分!
有点修改,第一题:如果满五位,超出的部分左边截掉。
现在有个要求,原字符串只能使用一次,求解第二题。

补齐函数lpad()或者rpad(),一个是左边补齐lpad(),一个是后边补齐rpad(),举例:
lpad(\'aa\',5,‘0’)这个意思是在左边用0补齐5位,结果是000aa。
截取函数:substr(‘1234567’,1,5)意思是把1234567这个字符串从1个位置开始截取,截取到第五个

第一题:select substr(lpad(\'1234567\',5,\'0\'),1,5) from dual; 结果12345
select substr(lpad(\'123\',5,\'0\'),1,5) from dual; 结果00123
第二题:select case when length(\'1234567\')>5 then \'1234567\' else lpad(\'1234567\',5,\'0\') end from dual; 结果1234567
select case when length(\'1234\')>5 then \'1234\' else lpad(\'1234,5,\'0\') end from dual; 结果01234

实验通过了,望采纳追问

不能用if,else,then啊

追答

这个是case 啊。不用case实现不了,你说的不用if之类的是不能写pl/sql,这个case是sql语法

参考技术A 第一题:select lpad(substr('你要操作的字符串',1,5),5,0) from dual;
第二题:select lpad('你要操作的字符串',5,0) from dual;

补充回答:select lpad(substr('你要操作的字符串',LENGTH('你要操作的字符串')-4,5),5,0) from dual;追问

长-4是什么意思

追答

LENGTH('你要操作的字符串')是一个方法,得到的是一个整数
它来减去4,得到另一个整数来作为substr方法的一个参数

追问

第二个问题这样写,超过五位,多的不能显示吧

追答

可以的

追问

我实验啦下,超过五位,刘不能显示五位以上的啊?

追答

select concat(lpad('你要操作的字符串',5,0),substr('你要操作的字符串',6,LENGTH('你要操作的字符串')-5)) from dual;

参考技术B select case when length(str)>5 then substr(str,-5,5) else lpad(str,5,'0') end from dual;

oracle查询数据速度慢,已建索引的。求助

方法如下:
Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名);
例如:
create index index_userid on tbl_detail(userid);
如何找数据库表的主键字段的名称?
SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE=\'P\' and table_name=\'AAA\'; select * from dba_cons_columns where CONSTRAINT_NAME=\'SYS_AAA\';
Oracle 在创建主键(可以不加constraint SYS_AAA),会为库表自动创建索引,
索引的列为主键列。 并且当库表某些列名或者库表名改变时候,
Oracle自动创建的索引SYS_AAA,中的索引列也会自动更新(类似于视图),并且SYS_AAA会与名字更改后的库表还是保持索引关系。 关键系统库表: desc dba_constraints desc dba_cons_columns
desc dba_indexes desc dba_ind_columns desc DBA_TAB_COLUMNS
例子1:更改库表的列名
ALTER TABLE AAA RENAME COLUMN ID TO AAA_ID; create table AAA ( ID NUMBER(8), NAME CHAR(20),
constraint SYS_AAA primary key(ID) );
//查找约束名字
select c.CONSTRAINT_NAME,c.table_name,cc.COLUMN_NAME from user_constraints c, user_cons_columns cc
where c.constraint_name=cc.constraint_name and c.table_name =\'AAA\' AND C.CONSTRAINT_TYPE=\'P\';
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------ ------------- SYS_AAA AAA ID
//查找索引
select index_name,index_type,uniqueness from user_indexes where table_name=\'AAA\'; INDEX_NAME INDEX_TYPE UNIQUENES
参考技术A 如果你的id 字符长度是一样的话
可以是试一下直接 select max(id) from 表 ,看看速度。
可以把pga改大一点追问

这样的话速度就很快,但查到的值不是需要的值

参考技术B 1、可以尝试重建索引;
2、删掉不必要的数据,减少数据量;
3、分区分表。追问

嗯,试了,查询的字段是varchar2型,这个字段全是数字,查询语句是select Max(to_number(id)) from 表;速度好慢,求解

以上是关于oracle数据库的上机题求助:的主要内容,如果未能解决你的问题,请参考以下文章

求助#oracle数据库超出最大连接数

oracle查询数据速度慢,已建索引的。求助

java、jdbc操作oracle数据库问题、急啊 求助啊!!

紧急求助:oracle内存不释放的故障

求助,oracle多行数据合并成一行

求助,oracle多行数据合并成一行