我想知道这个负数检索是怎么回事,一直搞不明白,10分哦,很容易拿的。
看来我描述的不是很清楚,这样吧,假设查询一张表A的no字段
select a.no from A a where a.id = '12' 结果为'CNDEA'
现在,我使用instr函数
select instr(a.no,'CN',1,1) from A a where a.id = '12' 结果为1这里若正数6,结果为0,我试过好多次了
select instr(a.no,'CN',-12,1) from A a where a.id = '12' 结果为1
。。。。不管负数多大,结果都能查到1,但是正数就不行了,请问这是为什么?
select instr(a.no,'CN',1,1) from A a where a.id = '12' 结果为1这里若正数6,结果为0,
答:因为你的字段总长是5.所以从6开始是找不到'CN'的
select instr(a.no,'CN',-12,1) from A a where a.id = '12'
答:我测试的结果是0而不是你说的1
如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
第一个答,我明白,第二个不准确吧,我这里测试的结果分明是1哦
追答SELECT instr('CNDEA','CN',-12,1) FROM DUAL;
真的是0奥
把你的建表语句和查询语句贴出来,如果真是0,我给你分(虽然答案并非我想要的。)
追答DUAL,是ORACLE的默认临时表。只是用它来测试instr的结果。我回答问题不是为了分,是相互交流和帮助。
追问我知道是临时表,也不是分的问题,问
题是我这边确实是1
真的是0哦
无解了,真无解了。
追答。。。。要不,,你再看下INSTR解释和问下同事。我的理解就是这样的了。
你可以尝试下看看,我这边是1的,而且你这个回答跟我问的一点都不搭边,相信你没碰到这个问题