我有这样一组数据
10,破破,879789,489789789798,黑龙江省哈尔滨市
用insrt第二个逗号的位置是6,第三个逗号的位置是13
然后我用substr()截出来的内容是,879789,48978
为什么不是,879789,
如果要这样的结果就是substr(6,8)这是咋回事啊。。
select SUBSTR(content,INSTR(content,',',1,2),INSTR(content,',',1,3)) from Item
取的是从第一个逗号到第二个逗号之间的内容啊。。
得出的是substr(6,13)
但为啥结果是,879789,48978
10,破破,879789,489789789798,黑龙江省哈尔滨市
用insrt第二个逗号的位置是6,第三个逗号的位置是13
然后我用substr()截出来的内容是,879789,48978
为什么不是,879789,
如果要这样的结果就是substr(6,8)这是咋回事啊。。
select SUBSTR(content,INSTR(content,',',1,2),INSTR(content,',',1,3)) from Item
取的是从第一个逗号到第二个逗号之间的内容啊。。
得出的是substr(6,13)
但为啥结果是,879789,48978
最后个参数不写就是默认截到字符串尾
select SUBSTR(content,INSTR(content,',',1,2),INSTR(content,',',1,3)) from Item
你这个当然不对喽,第一个,号是第六位,第二个是13位
从第六位截取13位长度,你自己算一下,
正确的select SUBSTR(content,INSTR(content,',',1,2),INSTR(content,',',1,3)-INSTR(content,',',1,2)) from Item
如果要从,号后面开始截,后面的,号也不要
select SUBSTR(content,INSTR(content,',',1,2)+1,INSTR(content,',',1,3)-INSTR(content,',',1,2)-1) from Item
答案如下:
select regexp_substr(content,'[^,]+',1,2) from Item
如果你想取得第2个逗号到第三个逗号之间的部分,直接把2改成3即可。
要不我就参了要把数据读到内存中再分页。。