instr函数是不是存在bug

fmfeggman 2010-12-03 03:54:01
select instr('','B') a from table

按照网上的说明,instr返回结果应该返回0,但实际切返回空,这是不是一个bug

...全文
110 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fmfeggman 2010-12-03
  • 打赏
  • 举报
回复
谢谢
结贴了
gelyon 2010-12-03
  • 打赏
  • 举报
回复
fmfeggman 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wkc168 的回复:]
引用楼主 fmfeggman 的回复:
select instr('','B') a from table

按照网上的说明,instr返回结果应该返回0,但实际切返回空,这是不是一个bug

'' 或者null 比较 is null is not null

跟 'B' 比较本来就是无意义 所以为空
[/Quote]

select case instr('','B') when null then 'null' end from dual
返回空白

select case instr('','B') when '' then 'empty' end from dual
expected number got char

case when 认为他肯定返回他的返回类型肯定为number,想不通

所以只能改成
select instr(' ' || '','B') a from dual

心中的彩虹 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 fmfeggman 的回复:]
select instr('','B') a from table

按照网上的说明,instr返回结果应该返回0,但实际切返回空,这是不是一个bug
[/Quote]
'' 或者null 比较 is null is not null

跟 'B' 比较本来就是无意义 所以为空
gelyon 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuomingwang 的回复:]
''这里没本来就没有东西,肯定是空咯
返回0表示第一个参数里有东西但是没有你找的

SQL code


SQL> select instr('','B') a from dual;

A
----------


SQL> ed
已写入 file afiedt.buf

1* select instr(' ','B') a from dual
……
[/Quote]
正解!
  • 打赏
  • 举报
回复
''这里没本来就没有东西,肯定是空咯
返回0表示第一个参数里有东西但是没有你找的


SQL> select instr('','B') a from dual;

A
----------


SQL> ed
已写入 file afiedt.buf

1* select instr(' ','B') a from dual
SQL> /

A
----------
0
【超级记事本(SuperNotePad) V6.40.959使用说明】 【制  作】︰Savage 【适用平台】︰Windows XP/Windows 2003/Windows Vista 【联  系】︰log2.0@163.com 【校  验】︰MD5: 68F54DC19E37B17417F47A7DA6707820        SHA1: 01709CB64B0BA21EDD4C0B808384A8590480167F 【SuperNotePad.exe 说明】︰ ---------------------- 1.主程序大小132 KB (135,680 字节); 2.代码高效,程序已经经过近四百多次的调试; 3.信息加密算法安全高效,可任意深度加密; 4.右键集合了大多数常用功能,不常用的在"工具"中; 5.主要的特色功能︰ 00) 语音朗读文本 (注:[自定义欢迎词]中可更改欢迎语音;                  XP下初始只有一个缺省语音引擎,为英文MSSam;                  朗读中文需要TTS简体中文语音库,没有的请下载,                  否则将无法阅读中文.) 01) 文本转为语音文件 02) 信息密钥对称加密 (注:可任意深度加密;                  密钥支持任意长度中文/英文/特殊字符,有效抵抗                  穷举密钥攻击;                  若进行多重加密可使得穷举密钥解密变成不可能                  完成的任务.) 03) 计算表达式    例︰2*sin(30*3.1415926/180) 支持批量表达式                  计算,每个表达式请放在独立的行中 04) 执行DOS命令     例︰@echo off&setlocal; EnableDelayedExpansion&color; 0f&set; all=1&set; /A a=0&set; /A b=1&set; /A c=0&for; /L %%i in (0,1,44) do (set /A c=!a!+!b!&set; /A a=!b!&set; /A b=!c!&set; all=!all! !c!)&if; %%i equ 44 (echo 斐波纳齐:!all!)&pause;>nul&exit; 05) 执行应用程序    例︰"control.exe appwiz.cpl" 06) 执行VBS脚本     例︰a=3:b=4:c=5:p=(a+b+c)/2:msgbox "Area=" & sqr(p*(p-a)*(p-b)*(p-c)),64,"海伦公式" 07) 数值进制间转换  (注:支持批量,支持十进制范围:1E+308~9E-324;                  二进制正/负数均采用补码表示.如十进制负数-8的                  二进制1000应为11000(也可表示为1000,在本软件                  中当二进制第一位为1时可省略符号位);十进制正                  数8的二进制1000应为01000(符号位不能省)) 08) 多种替换|转换功能   (注:支持批量\par\tab\asc\nul) 09) 状态栏便捷查看文本编码方式、文件路径、字符的各种信息 例︰字体|大小|颜色|...|编码 10) 浏览当前编辑文档所在的文件夹(注:F6) 11) 排序 12) 填充序列数      (注:支持批量\par\tab\asc\nul) 13) 字符/串拆分、合并、翻转 14) 定位匹配括号 15) 多种右键菜单     (注:鼠标中键或Shift/Alt/Ctrl+鼠标右键) 16) 便捷时间显示 17) 关联到右键打开方式 18) 便捷的几种显示模式 19) 汉字转拼音/缩写 20) 两种方式打开拖入文档 (注:请拖到[标题栏]或[状态栏],否则识别为链接;                  在[设置]中可配置拖入文档打开方式[插入/新建]) 21) 支持多种格式UTF-8, BIG5, GB2321, Unicode,Unicode big edian, Rich Text, USC-2 22) 查看密码       (扩展对所有已打开的窗口密码均有效Ctrl+D) 23) 正则表达式处理字符  例︰"\b([a-z]+) \1\b"合并多次重复单词

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧