如何使用PL/SQL实现二分查找呢?

作者&投稿:攸衫 (若有异议请与网页底部的电邮联系)
在PL/SQL中,查找表中多条重复记录(多个字段重复,有4个字段不重复),保留重复数据中时间最小的那一条~

select min(时间),姓名,学号…… from 表 group by 姓名,学号……

你简直乱写,第一个错误是(leftIndex+rightIndex)/2,不是leftIndex+rightIndex/2,你要搞懂什么是二分法原理再来写代码,第二个错误是你没有定义leftIndex、midIndex、rightIndex,人能看懂,机器看得懂?最后一个毛病,你确定要用递归吗?

begin
declare @split nvarchar(10),@arr nvarchar(100),@str nvarchar(100);
declare @front int, @mid int,@ed int,@ct int;
declare @str_m nvarchar(100);
declare @tb table(id int,a nvarchar(20));
set @split=',';--分割字符
set @arr='1,2,3,4,5,6,7,8,9,10';--有序数组
set @str='9';--指定数据
set @ct=1
-------sql中没有数组字段 先把字符按数组格式拆分
WHILE Charindex(@split, @arr)<>0
begin
insert @tb(id,a) values( @ct,Substring(@arr, 1, Charindex(@split, @arr) - 1));
set @arr=Stuff(@arr, 1, Charindex(@split, @arr), '');
set @ct=@ct+1;
end
insert @tb(id,a) values( @ct,@arr);
-------------id 就是对应的数据在数组中的位置 只不过需要减1-------------------------
-------------下面是二分法,有什么不对欢迎讨论,满好玩的---------------------
set @front=1;
set @ed=@ct;
set @mid=(@front+@ed)/2;
set @str_m= (select a from @tb where id=@mid );
while @str<>@str_m
begin
if @str_m>@str
begin
set @ed=@mid-1
set @mid=(@front+@ed)/2
set @str_m= (select a from @tb where id=@mid );
if @front> @ed
begin
print '没在数组中'
break;
end
end
else if @str_m<@str
begin
set @front=@mid+1
set @mid=(@front+@ed)/2
set @str_m= (select a from @tb where id=@mid );
if @front> @ed
begin
print '没在数组中'
break;
end
end
end
print @mid-1 --返回数组中的位置
end


如何使用PL\/SQL 11.0连接远程Oracle12c服务器
1.表示数据库实例使用密码文件 2.允许SYSORASYSOPER权限赋值给SYS外其用户 所要操作系统身份登录Remote_Login_Passwordfile应该设置NONE 登录用户ORA_DBA组ORA_OPER组员登录数据库需要Oracle创建前操作系统用户相同用户名前用户域用 户则名称:domainname\\yourname,本计算机用户则名称:computername\\yourname 创建...

如何用pl\/sql工具导出oracle数据库中的表
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。第三种是导出为.pde格式的,.pde为Pl\/sql developer自有的文件格式,只能用Pl\/sql developer自己导入导出,不能用编辑器查看。3.最后点Export就完成数据库中的表及数据的导出了。

千千静听上的PL\\EQ\\LRC是什么?有何作用?
PL是打出播放列表,可以设定要听的歌曲范围 EQ是音乐均衡器,按照你的习惯设置音乐的播放效果 IRC是歌词显示,打开以后播放音乐时可以同步歌词

oracle pl\/sql 编程什么工具好用
求Oracle PL\/SQL编写 过程 定义:CREATE [OR REPLACE] PROCEDURE <过程名>[(参数列表)] IS [局部变量声明] BEGIN 可执行语句 EXCEPTION 异常处理语句 END [<过程名>]; 变量的类型:in 为默认类型,表示输入; out 表示只输出;in out 表示即输入又输出; 在PL\/SQL块中直接使用过程名...

PL\/SQL最差实践
减少或取缔全局变量的使用 对于要在过程间交互的变量 通过参数传递来实现 如果必须使用全局变量 应对全局变量进行get\/set函数封装 规范对全局变量的访问 PL\/SQL中嵌入复杂SQL语句 影响 可维护性 症状 在PL\/SQL代码中嵌入SQL语句 如 PROCEDURE 过程A IS BEGIN UPDATE T_A SET COL = ; END; PROCEDURE 过程B ...

钙钛矿太阳能电池的TRPL有何应用价值?
通过PL,我们可以观察物质在光激励下的荧光现象。当电子跃迁至导带,留下空穴,形成准平衡态。电子和空穴的复合发光产生不同波长的光谱图,其强度直接反映了非辐射复合的效率。在本征测试中,高强度意味着非辐射复合少,而有传输层的样品,低强度暗示电子或空穴提取快速,表明载流子逃逸率高。TRPL:探测动力...

cad中,输入PL我试了,四个点输完后显示的是一条直线,不知是什么原因...
用输入点试试...改下点样式...改成能直观看点...把四点都画出来知道样了...坐标错误还问题应该明白了...而且样也把要图形完成了...

cad的pl和ml命令有何区别
介绍auto cad快捷键中大量有用,但不常接触的命令;一些特殊cad命令的注意事项;还有相似的cad命令的区别.这些将使你在auto cad操作中更加得心应手,更加方便快捷.AUTO CAD快捷键常见命令 (一)字母类 1、对象特性 ADC, *ADCENTER(设计中心“Ctrl+2”)CH, MO *PROPERTIES(修改特性“Ctrl+1”)MA,...

这个在cad中用pl线怎么画(不是一点点描哦),cad有这个线形么?有的话发...
貌似没这个线性 ...没有这个线型,可以自己画,如果让我帮你画,你给25分我吧。 ...当然没有这样的线型了,自己画一个单元,阵列,然后用修剪等处理一...

pl sql 如何定时从数据库中取数据
写个存储过程 主要实现的就是将数据放到本地 然后用job manager ,定时,每天几点执行将数据放到本地

新绛县18577345129: 如何使用PL/SQL实现二分查找呢? -
钞洋兰宇: begindeclare @split nvarchar(10),@arr nvarchar(100),@str nvarchar(100);declare @front int, @mid int,@ed int,@ct int;declare @str_m nvarchar(100);declare @tb table(id int,a nvarchar(20));set @split=',';--分割字符set @arr='1,2,3,4,5,6,7,8,9,10...

新绛县18577345129: 如何使用PL/SQL工具批量导出表,存储过程,序列 -
钞洋兰宇: 如何使用PL/SQL工具批量导出表,存储过程,序列 首先登录到数据库中,通过PLSQL工具等到到数据库,然后点击工具栏上的tools(工具)选择导出用户对象,点击tools工具之后,向下查找Export User Objects功能,通过这个功能...

新绛县18577345129: pl\sql 如何同时操作2个用户的数据 -
钞洋兰宇: 可以通过userID把两张表连接起来查询:select from User表 as z, Time表 as m where z.UserID = m.UserID 写入数据时, 先判断User表是否存在, 不存在就insert, 然后再insert那个Time表, 记住这两步要放在一个事务里 begin tran 成功就 commit tran 失败就 rollback tran select isnull(max(usreID), 0) as UserID from User表 where UserID = '用户ID' 返回的值大于0代表存在, 等于0代表不存在.

新绛县18577345129: 如何使用PL/SQL语句显示表结构 -
钞洋兰宇: 1、登录plsql2、点击左上角小白纸片,新建-命令窗口3、输入:desc 表名; 这就是表结构了

新绛县18577345129: 如何使用PL/SQL来做oracle数据库的备份 -
钞洋兰宇: 1、PL/SQL 是用来操作oracle数据库的工具,一般不建议用它来备份数据库.对于简单的数据库,可以用它来导出表及存储过程,这也是某种意义上的备份.参看:http://jingyan.baidu.com/article/22fe7ced3e130d3002617fca.html2、要真正意义上的备份,还是要使用oracle自有的功能在安装有oracle服务的计算机上进行,一般使用命令行指令来做,标准语句是:导出:exp system/passwd file=test.dmp full=y 导入:imp system/passwd file=test.dmp full=y ignore=y

新绛县18577345129: 如何用PL/SQL在oracle下执行多个SQL脚本? -
钞洋兰宇: 用PL/SQL在oracle下执行多个SQL脚本的方法: PL/SQL developer----->File------>New---->command window 然后在弹出的窗口里依次执行:SQL> @f:\abc\a.sql; SQL> @f:\abc\b.sql; SQL> @f:\abc\c.sql;SQL*Plus 中执行多个*.sql脚本文件的方...

新绛县18577345129: 如何用用PL/SQL实现两表数据比对插入功能 -
钞洋兰宇: g test2 t2on (t1.id = t2.id)when matched thenupdate set t1.name = t2.namewhen not matched theninsert values(t2.id,t2.name)--这个相当于条件判断,这个例子的含义包括了update和insert,所以可以通俗理解为和文件粘贴复制后直接替换一样.

新绛县18577345129: oracle数据库,如何使用PL/SQL 用变量当条件查询数据? -
钞洋兰宇: 一样啊,声明、赋值、使用:1 2 3 4 5 6DECLARE@col1Value varchar(20); --声明变量 BEGIN@col1Value := '呵呵'; --为变量赋值select* fromtb1 wherecol1 = @col1Value; END;

新绛县18577345129: 如何使用PL/SQL将sql脚本数据导入数据库 -
钞洋兰宇: 如何使用PL/SQL将sql脚本数据导入数据库 在pl/sql developer中,新建command窗口,然后打开sql脚本,执行

新绛县18577345129: pl sql安装好了如何用? -
钞洋兰宇: 要使用PLSQL必需先安装好ORACLE软件或者ORACLE客户端软件才能使用的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网