设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
PL/SQL Challenge 每日一题:2015-6-23 字符串的比较 ...
返回列表
发新帖
PL/SQL Challenge 每日一题:2015-6-23 字符串的比较
[复制链接]
11
|
9
|
2008-9-15 01:28:12
|
显示全部楼层
|
阅读模式
(原发表于2010-11-29)
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:
KenHolmslykke
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
哪些选项显示了我执行下列代码块之后屏幕上所出现的内容?
DECLARE
SUBTYPE index_t IS all_objects.object_type%TYPE;
TYPE list_t IS TABLE OF PLS_INTEGER
INDEX BY index_t;
l_list list_t;
BEGIN
l_list (1) := 1;
FOR indx IN 2 .. 150
LOOP
l_list (l_list.LAST + 1) := indx;
END LOOP;
DBMS_OUTPUT.put_line (l_list.COUNT);
END;
/
(A)
150
(B)
10
(C)
会出现VALUE_ERROR 异常。
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
真是想不到
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
OBJECT_TYPE
VARCHAR2(19)
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
好像之前出一个类似的题目。 也是关于 index by [数值型 | 字符型]
l_list (1) := 1;
下次的l_list(l_list.last + 1) 出的下标,应该是 2 。 再循环一次,就是 3 ,直到 9
当 l_list.last =9 时, l_list.last + 1 = 10 。
此时,按index by index_t , 这里的 index_t 是引用的 object_type 是字符型 。〇〇 已列出来了 OBJECT_TYPE
VARCHAR2(19)
按数值是,10 比 9 大,但是按字符比较 '9' 是大于 '10' 的。
再向下循环, l_list.last 还是 9 ,一直到最后, 150 也好, 1500 也好,始终更新的是 l_list(10) 的值 。
掰手指头一数,就是 10 个数。
l_list.count = 10
B 是正常答案。
求高人指点。
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
4 楼 看起来是正确答案啊
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
4 LZ 解释得很清楚!
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
答案B, 4楼得奖。
A: 如果集合是用整数做索引,这个选项就对了。
B: 下面这个布尔型变量永远返回TRUE,所以在集合中只会用到10个不同的索引值:
DECLARE
l_boolean BOOLEAN;
BEGIN
l_boolean := '9%' > '1%';
END;
/
C: Oracle执行了一个从数值到字符串的隐式转换,然后又转换回来,这期间的所有字符串里面都是有效的整数值,所以不会发生异常。
-------
这是一个刁钻的问题,起因在于ORACLE的灵活性,以及在执行隐式转换上的不一致性。这个块中使用的关联数组的索引是VARCHAR2(19)(即数据字典视图ALL_OBJECTS的object_type列的数据类型)。
ORACLE执行下列这行代码的结果:
l_list (1) := 1;
在索引位置为 "1" (字符串"1"和数值1是完全不同的)定义了一个值为1的元素。
然后执行了查询。让我们一步一步看看ORACLE在执行下列语句时做了什么:
l_list (l_list.LAST + 1) := indx;
当 indx = 1:
l_list.LAST = "1"
将 "1" 转换成 1
再加上 1 = 2
将 2 转换为 "2"
将值2存储在索引位置 "2".
...
当 indx = 10:
l_list.LAST = "9"
将 "9" 转换为 9
再加上 1 = 10
将 10 转换为 "10"
将值10存储在索引位置 "10".
当 indx = 11: l_list.LAST = "9"
将 "9" 转换为 9
再加上 1 = 10
将 10 转换为 "10"
将值11存储在索引位置 "10".
等一下!为什么我们不把值11保存在索引位置"11"? 具体地说,为什么l_list.LAST返回"9"而不是"11"? 哦,因为它们是字符串,以"9"开头的字符串比"1"开头的字符串更大(至少在我们所用的缺省字符集是这样)
结果,最后一个值的索引位置永远返回"9",所以总共才用了10个索引值。
我知道这很刁钻。但这是个有价值的教训,当你决定将一个关联数组的索引从PLS_INTEGER转换成VARCHAR2就要特别小心。
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
啊,last函数,index by varchar2,这俩是关键
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
lastwinner 发表于 2015-6-27 23:21
啊,last函数,index by varchar2,这俩是关键
这个错误点太阴险了
回复
使用道具
举报
千问
|
2008-9-15 01:28:12
|
显示全部楼层
反应不过来啊!
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
常州武进区的09年上半学期的初中期末考试是几号?
2
95年男生请教街舞
3
露娜人类法师转职问题
4
安徽阜 阳有瓷砖,和地板砖批发市场吗?
5
我男朋友这几天手脚和腿部老是发肿,是怎么回事?
6
穿越火线装备多少钱
7
郭敬明的书可以拍成电视剧,饶雪漫的怎么不行
8
我的硬盘格式化没用,分区没用,低格也没用
9
我在家中电脑上怎么玩赤色要塞
10
综艺满天星海选聊城赛区的报名电话?
11
需要购买个无线路由器,想买TP link的,但型号太多,不明白,我家是ADSL 1M的速度
12
多塔地图下载后格式为W3X,而MAPS中地图格式为W3M,为什么
13
做包皮皮没对好一直长不住!
14
承德避暑山庄门票学生证能便宜吗?
15
会计从业资格考试科目分为2大类:1、会计专业知识方面的考试,2、会计技能考试。。。
16
请问P4 2.5G和3.0G的CPU性能差距大吗?
17
中国南京移动动感地带和神州行卡长途优惠时段和资费情况
18
我现在是一名大专生,是大一的。问一下,现在我这样的状况以后还可以上江南大学吗?有什么办法可以上啊?
19
给我一个2字头的QQ!!。拜托!!
20
QQ问题!!!
21
大脑皮层是脑的____部分?大脑皮层可分为____中枢、____中枢、____中枢和____中枢等功能区
22
Is that ____ you want? A that B that what c what 为什么?
23
我爱黑涩会 舞曲 20090618 小涵和玉兔的那首歌是什么
24
CS龙珠哪个版本好
25
普通房屋建筑中大梁露钢精怎么处理
26
这个朋友我该不该交
27
英语斜音
28
王子?鬼鬼?变了!因为~
29
我的电脑桌面上为什么会多了一个删不掉的Internet Explorer.url文件?图标和因特网图标一样
30
介绍一款好一点的SUV和超跑
31
关于购买望远镜的问题
32
感情问题。
33
谁能教我导弹基地旋转跳
34
梦幻吃千年人参生孩子
35
只知道吃进,不会付出的传说中的动物叫做什么?
36
你更看重爱情还是更物资享受?
37
高手帮我设计个艺术签名啊
38
求韩版偶像剧
39
关于牙套
40
关于高考的答题卡定位点问题...请专业人士回答下~~~
41
我是混合性皮肤,推荐一款洗面奶
42
甲乙俩书架共有书600本,如果从甲书架拿出50本,从乙书架拿出10本
43
3g手机可以当笔记本电脑用吗
44
林志颖最爱什么?
45
做厨师好吗
46
我是学幼师的,今年冬天就毕业了,我想去韩国上学,是不用考试,就可以上,我想在那里边大工边上学,.
47
吉林大学材料物理就业前景
48
龙岩地区哪里长期收购竹鼠
49
开机键盘不能用
50
明年北医在山东的分数线估计。
51
谁能给个海贼王漫画的地址啊
52
麻烦各位帮我查询一下QQ372186240最后一次登陆地与时间,不要方法,知要结果
53
蒲松龄的《促织》中,“上于盆而养之”的“上”是什么意思?
54
实木木板
55
让老婆做服务员好吗?
56
危险品储运不当后果?
57
续意难忘4大结局
58
09年快乐女声的一首歌
59
现在数码照相馆冲洗照片用的哪些机器?
60
E2200相当于AMD什么CPU
61
高中生能不能当义工,志愿者什么的,还没有满十八岁,而且要到哪里去报名?
62
电脑文件无故丢失
63
嘉兴中兴娱乐会所
64
给成都大学写信的地址
65
电脑总是自动关机
66
结合自己谈谈为什么要加入党组织,怎样创造条件加入党组织?
67
求以武涧君做一七言的诗《武涧君》
68
A,B,C,D,E五种短周期元素的原子序数依次增大
69
09年四川日语能力等级考试报名
70
是不是小家电现在没有国家3包只能保修
71
青春期的突出特征
72
显示器屏幕跳动原因
73
哪里能买到正宗OPI指甲油呢?
74
我可怜的痘痘
75
我想卖北京奥运银5x40g
76
移动座机的卡怎么能解锁放在手机上用啊,成功的话给加分
77
cad小问题
78
能在这里和某个女生预约一起过今年的春节吗
79
大话3赏金问题
80
谁来拯救我的电脑~~~~
81
求几部哆啦a梦的动画地址
82
铁砂掌洗手药方
83
恶魔城 时之魔人打完后去那里
84
我家的声卡坏了型号T-221 麻烦大家帮个忙
85
In the past,he ____his living by carrying bricks ten hours a day.
86
一个角的补角的三分之一等于这个角的余角的二分之一,求这个角的度数?
87
热血传奇133区1-6的天尊手能卖多少YB》?
88
大家认为肇庆09中考的题怎么样?不妨在这说说!
89
各位日语高手请进
90
普通高中学习哲学的意义及如何才能学好?
91
《礼记》中有一句话告诉我们要诚实守信,即:诚者,( ),诚之者,( )。每个人都应记住
92
负2的负二次方
93
一个盆里可以种多少株成年薰衣草?
94
一天的时间,去北京哪儿好?明天出发,在线等!!!
95
请问蜀绣的原材料有哪些,在什么地方能买到?
96
翻译英语:PONDS的意思是?
97
极品飞车8!!!!
98
求新仙剑奇侠传修改器
99
悬赏! 想买台笔记本