sql语句转成oracle

luyesql 2012-03-15 11:32:39
select right('00000'+Convert(nvarchar(50),max(Convert(int,bh)+1)),5) from J_topic where Parentbh=''

这句在oracle里怎么写?谢谢
...全文
142 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosio 2012-03-15
  • 打赏
  • 举报
回复
SELECT lpad(to_char(max(to_number('123')+1)),10,'0') FROM dual
我心飞翔 2012-03-15
  • 打赏
  • 举报
回复
请参考:

SELECT SUBSTR('00000' || to_char(MAX(to_number(bh)) + 1),
LENGTH('00000' || to_char(MAX(to_number(bh)) + 1)) - 5);
luyesql 2012-03-15
  • 打赏
  • 举报
回复
substr理解错误
应该是
select substr(to_char(max(to_number(bh)+1)),-5,5) FROM J_topic where parentbh='00001'
luyesql 2012-03-15
  • 打赏
  • 举报
回复
很奇怪
select to_char(max(to_number(bh)+1)) FROM J_topic where parentbh='00001'
得到的结果是100002
我取后面的五位数

select lpad(to_char(max(to_number(bh)+1)),5,'0') from J_topic where Parentbh='00001'
得到的结果是 10000
用 substr(to_char(max(to_number(bh)+1)),-0,5)结果也是10000
luyesql 2012-03-15
  • 打赏
  • 举报
回复
SELECT lpad(to_char(max(to_number('123')+1)),10,'0') FROM dual


这个把10改成5的话,怎么变成10000
cosio 2012-03-15
  • 打赏
  • 举报
回复
我的那语句,你在研究一下,没有什么大的问题
hupeng213 2012-03-15
  • 打赏
  • 举报
回复
select right('00000'+Convert(nvarchar(50),max(Convert(int,bh)+1)),5) from J_topic where Parentbh=''
--'00000'+Convert(nvarchar(50),max(Convert(int,bh)+1))
--max(Convert(int,bh)+1)
--逐步拆解,要求期实很简单,最大编码+1,然后左边补零
--类为BH这个类型为别的类型,需要先做转换。这个转换ORACLE不需要,如果没记错的话,1在做加减等同于'1'
--转换后再换换回字符型,但我没懂,为什么要转为nvarchar
select lpad(max(BH)+1,'0',5) from J_topic where Parentbh='';
luyesql 2012-03-15
  • 打赏
  • 举报
回复
是多了个1不是少了四个0
luyesql 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luiseradl 的回复:]

请参考:
SQL code

SELECT SUBSTR('00000' || to_char(MAX(to_number(bh)) + 1),
LENGTH('00000' || to_char(MAX(to_number(bh)) + 1)) - 5);
[/Quote]


这个如果查询parentbh='00001'时得到的结果是100002少了前面的四个0
luyesql 2012-03-15
  • 打赏
  • 举报
回复
好像都不对
是这样的

bh parentbh
00001 0
00002 0
0000100001 00001
0000100002 00001
主要是想实现这样的效果

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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